广告
返回顶部
首页 > 资讯 > 后端开发 > Python >怎么用Python创建加密货币
  • 561
分享到

怎么用Python创建加密货币

2023-06-15 12:06:13 561人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍“怎么用python创建加密货币”,在日常操作中,相信很多人在怎么用Python创建加密货币问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用Python创建加密货币”的疑惑有所帮助!接下来

这篇文章主要介绍“怎么用python创建加密货币”,在日常操作中,相信很多人在怎么用Python创建加密货币问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用Python创建加密货币”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

本文将向大家介绍如何使用Python  3.9.4建立属于自己的区块链和加密货币。在构建自己的加密货币或区块链之前,您需要了解Python和区块链的基础知识。区块链或许看起来很复杂,但可以肯定的是其核心概念确实非常简单。

要求

确保您已安装最新版本的Python。

入门

创建一个新的Python文件,文件名app.py。首先,我们应该创建一个Block类。

我将参考dzone.com的代码:

class Block(object):     def __init__(self):         pass      def compute_hash(self):         pass

我们还需要创建Blockchain类蓝图:

class Blockchain(object):     def __init__(self):         pass      def build_genesis(self):         pass      def build_block(self):         pass      @staticmethod     def confirm_validity(block, previous_block):         pass      def get_data(self, sender, receiver, amount):         pass      @staticmethod     def proof_of_work(last_proof):         pass      @property     def latest_block(self):         pass

积木类

现在,让我们看一下我们刚刚创建的这些类。块类将如下所示:

import hashlib import time  class Block(object):     def __init__(self, index, proof_number, previous_hash, data, timestamp=None):         self.index = index         self.proof_number = proof_number         self.previous_hash = previous_hash         self.data = data         self.timestamp = timestamp or time.time()      @property         def compute_hash(self):         string_block = "{}{}{}{}{}".fORMat(self.index, self.proof_number, self.previous_hash, self.data, self.timestamp)         return hashlib.sha256(string_block.encode()).hexdigest()

Block类采用几个参数:index,proof_number,previous_hash,data和timestamp。

  • 索引用于查看块在链中的哪个位置。

  • 我认为,前者是不言而喻的。

  • 数据是一个对象,它收集有关该区块的所有信息(id,金额,发送者,接收者等)。

  • 时间戳是指生成块的时刻。

在def compute_hash()方法中,我们的哈希将使用hash方法创建。

链条类

单独的块没有任何价值,并且使用链来加密数据,因此很重要。让我们为Chain类创建构造函数:

class Blockchain(object):     def __init__(self):         self.chain = []         self.current_data = []         self.nodes = set()         self.build_genesiss()

让我们看一下这些参数的作用。

  • 该self.chain是一个变量,它存储所有的块。

  • 该self.current_data是一个变量,它存储所有关于该块的信息。

  • 这self.nodes是用于设置节点的示例方法。

  • 所述self.build_genesis方法变量是创建第一块中的方法。

建立创世方法

此方法将用于创建初始块。因此,我们需要调用该build_block()方法。

def build_genesis(self):         self.build_block(proof_number=0, previous_hash=0)      def build_block(self, proof_number, previous_hash):         block = Block(             index=len(self.chain),             proof_number=proof_number,             previous_hash=previous_hash,             data=self.current_data         )          self.current_data = []         self.chain.append(block)          return block

在此方法中,创建一个新Block对象并输入所需的参数:索引,证明,previous_hash和数据。然后,我们设置当前数据并将该块附加到链中。

确认有效性方法

创建加密货币/区块链的重要部分是检查区块是否有效。我们用一种新方法来做到这一点。

@staticmethod     def confirm_validity(block, previous_block):         if previous_block.index + 1 != block.index:             return False          elif previous_block.compute_hash() != block.previous_hash:             return False          elif block.timestamp & lt; = previous_block.timestamp:             return False          return True

让我们解释一下:此方法使用几个if语句来检查Block是否是它应该的块。它compute_hash()再次使用该方法。

获取数据方法

当然,您希望能够读取您的块和区块链的数据,这是通过以下get_data()方法完成的:

def get_data(self, sender, receiver, amount):             self.current_data.append({                 'sender': sender,                 'receiver': receiver,                 'amount': amount             })              return True

该方法非常简单,它采用三个参数并将它们添加到对象中。

工作证明

在这个项目中,我们将添加一个工作量证明算法以使挖掘成为可能。

让我们创建def block_mining方法:

def block_mining(self, details_miner):         self.get_data(             sender="0",             receiver=details_miner,             quantity=1,         )          last_block = self.latest_block         last_proof_number = last_block.proof_number         proof_number = self.proof_of_work(last_proof_number)         last_hash = last_block.compute_hash          block = self.build_block(proof_number, last_hash)          return vars(block)

定稿

为了结束我们的项目,我们将以下代码行添加到def latest_block方法中,

return self.chain[-1]

现在,我们将测试我们的项目:

bc = Blockchain() print("READY") print(bc.chain) #output: READY [<__main__.Block object at 0x00000241A23C5EE0>]

当您看到类似的结果时,您的区块链蓝图已成功构建。如果您想添加额外的功能,则可以这样做,请告诉我您所构建的内容!

完整代码示例:

import hashlib import time   class Block(object):     def __init__(self, index, proof_number, previous_hash, data, timestamp=None):         self.index = index         self.proof_number = proof_number         self.previous_hash = previous_hash         self.data = data         self.timestamp = timestamp or time.time()      @property     def compute_hash(self):         string_block = "{}{}{}{}{}".format(             self.index, self.proof_number, self.previous_hash, self.data, self.timestamp)         return hashlib.sha256(string_block.encode()).hexdigest()   class Blockchain(object):     def __init__(self):         self.chain = []         self.current_data = []         self.nodes = set()         self.build_genesis()      def build_genesis(self):         self.build_block(proof_number=0, previous_hash=0)      def build_block(self, proof_number, previous_hash):         block = Block(             index=len(self.chain),             proof_number=proof_number,             previous_hash=previous_hash,             data=self.current_data         )          self.current_data = []         self.chain.append(block)          return block      @staticmethod     def confirm_validity(block, previous_block):         if previous_block.index + 1 != block.index:             return False          elif previous_block.compute_hash() != block.previous_hash:             return False          elif block.timestamp >= previous_block.timestamp:             return False          return True      def get_data(self, sender, receiver, amount):         self.current_data.append({             'sender': sender,             'receiver': receiver,             'amount': amount         })          return True      @staticmethod     def proof_of_work(last_proof):         pass      @property     def latest_block(self):         return self.chain[-1]      def block_mining(self, details_miner):         self.get_data(             sender="0",             receiver=details_miner,             quantity=1,         )          last_block = self.latest_block         last_proof_number = last_block.proof_number         proof_number = self.proof_of_work(last_proof_number)         last_hash = last_block.compute_hash          block = self.build_block(proof_number, last_hash)          return vars(block)   bc = Blockchain() print("READY") print(bc.chain)

终于我们使用Python创建了自己的区块链。

到此,关于“怎么用Python创建加密货币”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: 怎么用Python创建加密货币

本文链接: https://www.lsjlt.com/news/280177.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么用Python创建加密货币
    这篇文章主要介绍“怎么用Python创建加密货币”,在日常操作中,相信很多人在怎么用Python创建加密货币问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用Python创建加密货币”的疑惑有所帮助!接下来...
    99+
    2023-06-15
  • python怎么创建密码
    本篇内容介绍了“python怎么创建密码”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!使用:    ...
    99+
    2023-06-02
  • python怎么创建,追加,覆盖csv文件
    本文小编为大家详细介绍“python怎么创建,追加,覆盖csv文件”,内容详细,步骤清晰,细节处理妥当,希望这篇“python怎么创建,追加,覆盖csv文件”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。pytho...
    99+
    2023-06-30
  • python加密解密算法怎么使用
    Python提供了多种加密解密算法的库,比如`hashlib`、`hmac`、`base64`、`cryptography`等。下面...
    99+
    2023-09-17
    python
  • SAP SD怎么将其它ITEM加入到一个已创建好的交货单里
    本篇内容主要讲解“SAP SD怎么将其它ITEM加入到一个已创建好的交货单里”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SAP SD怎么将其它ITEM加入到一个已创建好的交货单里”吧!如下的销...
    99+
    2023-06-05
  • 怎么在 Linux 上创建一个加密文件保险库
    这篇文章主要介绍“怎么在 Linux 上创建一个加密文件保险库”,在日常操作中,相信很多人在怎么在 Linux 上创建一个加密文件保险库问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么在 Linux 上创建...
    99+
    2023-06-15
  • ubuntu怎么创建新用户和密码
    在Ubuntu系统中,创建新用户和密码可以通过以下步骤完成:1. 打开终端:可以通过按下`Ctrl+Alt+T`快捷键来打开终端,或...
    99+
    2023-08-26
    ubuntu
  • 怎么利用Python实现RSA加密解密
    这篇文章主要介绍“怎么利用Python实现RSA加密解密”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么利用Python实现RSA加密解密”文章能帮助大家解决问题。RSA加密实验基本流程:一、选取...
    99+
    2023-06-29
  • linux怎么创建用户并设置密码
    在Linux系统中,可以使用以下命令创建用户并设置密码:1. 打开终端窗口(Ctrl + Alt + T)。2. 输入以下命令创建新...
    99+
    2023-08-26
    linux
  • 怎么使用python实现md5加密
    本文小编为大家详细介绍“怎么使用python实现md5加密”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用python实现md5加密”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。python实现MD5加密...
    99+
    2023-07-06
  • 怎么用python tempfile创建文件
    本篇内容主要讲解“怎么用python tempfile创建文件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用python tempfile创建文件”吧!说明创建临时文件一般使用的模块就是t...
    99+
    2023-06-30
  • Python元组怎么创建使用
    今天小编给大家分享一下Python元组怎么创建使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。元组(Tuple)元组是有序...
    99+
    2023-07-06
  • Python中怎么调用JAR加密逻辑
    Python中怎么调用JAR加密逻辑,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。安装 JDK 之后,通过 jar -xvf 命令去解压单个 JAR,这样会按包名在同级目录...
    99+
    2023-06-15
  • Python中hash加密方法怎么使用
    这篇文章主要介绍“Python中hash加密方法怎么使用”,在日常操作中,相信很多人在Python中hash加密方法怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python中hash加密方法怎么使用...
    99+
    2023-06-28
  • python怎么创建并使用模块
    在Python中,创建和使用模块可以通过以下步骤完成:1. 创建模块:在一个文件中定义函数、变量、类等,并将其保存为.py文件。例如...
    99+
    2023-10-10
    python
  • python元组怎么创建和使用
    Python元组是一个不可变的有序序列,可以通过使用圆括号来创建。元组中的元素可以是不同类型的对象,且可以通过索引访问元素。创建元组...
    99+
    2023-10-11
    python
  • 怎么用Python创建视频游戏
    本篇内容主要讲解“怎么用Python创建视频游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Python创建视频游戏”吧!一分钟上手 PythonPython 是一种用途广泛的编程语言,...
    99+
    2023-06-15
  • 使用python怎么破解加密zip文件的密码
    使用python怎么破解加密zip文件的密码?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。python可以做什么Python是一种编程语言,内置了许多有效的工具...
    99+
    2023-06-14
  • Python加密与解密模块hashlib与hmac怎么使用
    这篇“Python加密与解密模块hashlib与hmac怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python加...
    99+
    2023-06-30
  • 怎么利用python破解zip加密文件
    本篇内容主要讲解“怎么利用python破解zip加密文件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么利用python破解zip加密文件”吧!一、破解zip加密文件的思路准备一个加密的zip...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作