使用 Python 逐步建立区块链应用程式的贴文首先出现在 Coinpedia 金融科技新闻上
介绍
区块链
区块链是金融和程式设计领域的先驱。它是一项新兴技术,由于其关键特征(例如没有中央机构来管理交易和资料库的去中心化机制)而受到世界各地的关注。它在透明度和安全性方面可以提供很多帮助。
人们可能想知道区块链到底是什么。
简单来说,区块链是指用加密技术将区块或文件链接在一起,就像一条前后通过加密规则连接的数字链条,在社区中流通和分发交易,参与节点使用加密机制达成共识并保持完整性。
区块链技术足够强大,可以抵御任何数字威胁和故障,因此更适合处理网络安全风险。
区块链中的 Python
Python 是最具活力和适应性最强的语言。对于任何软件工程领域,Python 都因其功能而始终是首选。与任何其他语言相比,它的语法简洁,执行任何函数所需的代码行数都更少。Python 的简单语法有利于处理错误和缺陷。
Python 拥有丰富的生态系统和多功能库,可加速您的开发之旅。例如,PyCryptodome 和 Hashlib 等库提供加密和计算功能,而 Flask 和 Django 等框架可用于 API 和 Web 应用程序界面。而 Brownie 和 Vyper 等库则用于智能合约部署。
Python 可以集成各种语言,如 C++、Java 和 Javascript,它还支持多种 API 集成。API 集成对于与其他软件、平台和框架的协作非常有用。Python 背后有一个庞大的社区,社区拥有值得称赞的响应式支持系统。有非常有用的开源贡献和数据科学和分析平台,使 Python 独一无二。
观众
现在真正的问题是如何使用 Python 开发区块链应用程序。
不用担心!这篇文章是你的助手。在这里我们专注于区块链中 Python 的使用和集成。所有崭露头角的开发人员都可以通过这篇文章开始他们的旅程。
担心设置和配置管理不完美?我们帮你搞定!让我们深入探索使用 Python 构建区块链应用程序的迷人世界。
设置开发环境
在开始开发之前,满足所有先决条件至关重要。在本节中,我们将引导您完成整个过程。
在配置方面,Python 具有最简单的设置过程。
让我们详细地看一下:
安装 Python
访问官方网站并下载最新的 Python 版本:https://www.python.org/downloads/
根据您的操作系统下载(Windows、MacOS、Linux)
它带有 Python 启动器,因此请查看安装指南 - 这将在您的系统上安装 Python。
使用命令行(命令提示符或终端)中的 python –version 或 python3 –version 验证安装。
注意:请确保安装最新版本的 Python-3.12,如果需要特定的实用程序,则只能使用较低版本。
选择 IDE
在系统上安装完 Python 后,下一步要注意的就是选择正确的开发环境。这是一个非常重要的步骤,因为选择一个合适的、没有任何配置差异的 IDE 是你所有未来项目的基础。
主要有两个 IDE:
PyCharm:Pycharm 由 JetBrains 开发,是 Python 最流行的 IDE。Pycharm 拥有广泛的工具来提高您作为开发人员的工作效率。
它提供各种功能,例如智能代码完成,可以根据函数实时完成代码模板。Pycharm 在调试工具方面确实很有魅力。它为您提供了多种选项,例如单步执行代码、逐步执行整个代码、添加多个断点以查看代码的哪一部分出现错误,以及一个控制台,用于运行代码的较小部分以及变量检查。
设置Pycharm的步骤:
访问官方网站并下载 PyCharm:
https://www.jetbrains.com/pycharm/download/?section=mac
现在按照弹出的说明进行操作。
安装完成后,启动 Pycharm 并配置您的项目和 Python 解释器,如下所示:
文件→设置→项目→您的项目→项目解释器并选择您之前安装的适当的 Python 版本。
Jupyter Notebook:Jupyter Notebook 是一个在线 IDE(Web 应用程序)。除了 Python,它还用于文本编辑。Jupyter Notebook 及其扩展程序可以远程在 VSCode 上运行。
设置 Jupyter Notebook 的步骤:
打开命令行界面:运行命令 pip install notebook
通过命令启动Jupyter Notebook:jupyter notebook
安装所需的库
以下是一些可以增强你的区块链开发体验的库:
Flask:Flask 是一个 Python 框架,用于构建 Web 应用程序和 RESTful API。在区块链中,它可用于创建仪表板和 DApps 界面等 Web 界面。
安装 Flask:pip install Flask
Requests:Requests 是一个用于处理和发送 HTTP 请求和响应的 HTTP 库。在区块链中,Requests 可用于连接区块链网络并进行查询。
安装请求:pip install request
Pysha3:Pysha3 是最重要的库,用于 SHA-3 哈希算法,如 SHA3-256 和 SHA3-512。哈希是区块链技术的一个宝贵方面,有助于其完整性和安全性。
安装 pysha3:pip install pysha3
Web3.py:Web3.py 是使用率很高的库中的佼佼者,具有多种功能,例如与智能合约交互、查询区块链数据和发送交易。Web3 是一个基于以太坊的库,可用于管理交易。
安装 web3.py:pip install web3
Pycryptodome:Pycryptodome 是一个功能齐全的 Python 低级加密功能包。该库提供安全性和数据完整性功能,如散列、加密、解密和其他加密操作。
安装 pycryptodome:pip install pycryptodome
Pandas:Pandas 是一个强大的数据分析和操作库,它具有一组数据结构和函数,可用于分析和可视化区块链和交易记录。
安装 pandas:pip install pandas
SQLAlchemy:SQL 是一个数据库,SQLAlchemy 是一个具有 Python 对象关系映射的 SQL 工具包。它支持数据库操作和与高级抽象的交互。区块链本身就是一个分布式数据库,该库将用于管理和查询关系数据库并存储交易记录以及用户凭证。
安装 SQLAlacemy:pip install SQLAlchemy
Numpy:Numoy 是 Python 中广泛使用的库,适用于各种应用程序。它可用于任何数值运算,并支持数组、矩阵等数学实体以及对它们的一系列函数和运算。在区块链中,Numpy 可用于处理和模拟交易记录并计算逻辑算法。
安装 Numpy:pip install numpy
理解区块链概念
如果我们打个比方来理解区块链,它就像存储在多个地方的历史数据库,所有地方都同等重要,没有任何一个实体主导网络。
如果你深入研究并理解区块链结构,它看起来像这样:
区块(交易)——–***链***——-区块。
它有三个组成部分:
区块:区块是保存信息或交易的单元。区块存储特定交易的列表。可以创建区块,或者我们可以说可以使用各种共识机制来挖掘区块。每个区块都有自己的一组唯一标识符,也称为哈希。哈希技术可用于加密区块中的数据。
交易:交易是区块链网络中跨不同货币的数据货币交换。交易详细信息与一组称为共识的协议一起存储在一个区块中。
链:众所周知,区块链类似于链表,其区块之间有连接。这些链接也称为链。由于链表中的每个指针都通过所有链接连接,因此区块也是如此。这些是一系列由前一个区块的哈希值连接的区块,这确保了区块链的数据完整性和安全性得到维护。更改的目的不仅仅是作为前一个区块和下一个区块之间的链接,而且还提供链接以及哈希值和加密原理。
去中心化、不变性和共识机制的重要性:
去中心化:去中心化是区块链最重要的特性。在这种机制中,没有任何一个实体可以控制整个数据库,从而防止区块链系统因任何差异而发生故障。由于去中心化,几乎不可能出现有偏见的系统。设备中的每个参与者都保留区块链的副本,这确保了透明度并抑制了中心化故障或操纵。
不可篡改:一旦数据被写入区块链,就无法更改,除非更改所有后续区块。更改区块链中的所有后续区块需要耗费大量计算资源,而且效率极低,最终会导致失败。对任何区块的更改都需要通过加密哈希进行。因此,一旦完成所有更改,就无法撤消,从而使区块链不可篡改。
共识机制:一套管理区块链所有必需品的协议。网络中的所有节点都需要就方法达成一致。共识机制用于简化节点并确保网络中的所有节点都在同一页面上。
构建一个简单的区块链
创建块类
在上面的代码中,我们为所有属性定义了一个Block类。
区块结构:
索引:索引是一个整数,表示区块在区块链中的位置。索引有助于识别区块链的顺序。
Genesis区块是index=0的初始区块。
时间戳:时间戳以字符串的形式存储创建块的实例。这有助于维护块的记录,例如块何时被挖掘或添加到区块链。
交易:这些表示为交易对象的向量,其中每个交易代表参与者之间的数据或价值的转移。存储块中包含的所有交易。
前一个哈希和哈希:前一个哈希存储前一个块的加密哈希,而哈希是一串混乱或散列的加密信息。
我们使用SHA3-256方法来计算该块的哈希值。
创建区块链类
定义一个区块链类来管理链和添加新块的方法。
在上面的代码示例中,genesis block(创世块)是区块链中的第一个块,get_latest_block(获取最新块)返回最新块,add_block(添加新块)。
实施工作量证明
共识算法是参与者在网络中添加区块和创建新区块时需要达成一致的规则。有以下各种机制:
权益证明:这是基于验证者准备拥有的权益。创建或验证区块所获得的权益越高,验证者被选中的可能性就越大。
工作量证明:工作量证明最早在比特币中引入,从那时起,它就被广泛采用为安全机制之一。在 PoW 中,参与者相互竞争以解决困难的加密难题。工作量证明有几个步骤:
创建区块:矿工收集要执行的交易并将其添加到区块中
对块进行哈希处理:首先,矿工指定一个随机数,然后将其通过加密函数,并使用唯一标识符对黑色进行哈希处理。
挖矿:挖矿就是反复改变随机数以找到满足网络难度要求的完美哈希值。
广播区块:一旦获得有效的哈希值,矿工就会将该区块广播到网络中,然后其他参与者对其进行验证。
将区块添加到区块链:如果发现区块有效,则将其添加到区块链,并且矿工将获得奖励。
调整难度:网络定期调整 PoW 难题的难度,以确保尽管总计算能力发生变化,但仍能以一致的速率挖掘区块。
其他:还有其他算法,例如 DPos(也称为委托权益证明),其中代表是通过选举产生的,另一个是拜占庭容错(PBFT)。
向区块链添加工作量证明
修改 Block 类以包含 proof 属性和 proof_of_work 方法:
更新了区块链类,以通过 add_block 函数验证证明。
使用 Flask 创建简单的区块链 API
1.设置Flask
安装 Flask:pip install Flask
2. 构建 API
创建一个 Flask 应用程序并定义用于添加块和查看区块链的端点。
运行并测试应用程序
1.运行Flask应用程序
运行 Flask 应用程序:(在命令行中)python app.py
2.使用 Postman 进行测试
添加一个块:curl -X POST -H “Content-Type: application/json” -d ‘{“data”: “Some data”}’ http://localhost:5000/mine
查看区块链:curl http://localhost:5000/chain
从以上评论来看,该应用程序将托管在 localhost:5000/chain
构建区块链应用程序的实例
1. 逐步执行
下面给出了开发区块链应用程序所涉及的所有操作的实时完整堆栈: