返回顶部
首页 > 资讯 > 后端开发 > Python >Python区块链Creating Miners教程
  • 513
分享到

Python区块链Creating Miners教程

2024-04-02 19:04:59 513人浏览 薄情痞子

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

摘要

目录消息摘要函数挖掘函数第1步第2步第3步测试挖掘函数为了实现挖掘,我们需要开发一个挖掘功能.挖掘功能需要在给定的消息字符串上生成摘要并提供工作证明.让我们在本章讨论这个. 消息摘要

为了实现挖掘,我们需要开发一个挖掘功能.挖掘功能需要在给定的消息字符串上生成摘要并提供工作证明.让我们在本章讨论这个.

消息摘要函数

我们将编写一个名为 sha256 的实用程序函数来创建给定消息的摘要 :

def sha256(message):
return hashlib.sha256(message.encode('ascii')).hexdigest()

sha256 函数将消息作为参数进行编码它为ASCII,生成十六进制摘要并将值返回给调用者.

挖掘函数

我们现在开发 mine 实现我们自己的挖掘策略的功能.在这种情况下,我们的策略是在给定消息上生成一个前缀为给定数字1的散列.给定的1的数量被指定为 mine 函数的参数,指定为难度级别.

例如,如果指定难度级别为2,则在给定消息上生成的散列应该从两个1开始 - 如11xxxxxxxx.如果难度级别为3,则生成的散列应以三个1开始 - 如111xxxxxxxx.鉴于这些要求,我们现在将开发挖掘函数,如下面给出的步骤所示.

第1步

挖掘函数有两个参数 - 消息和难度级别.

def mine(message, difficulty=1):

第2步

难度级别需要大于或等于1,我们使用以下断言语句 : 确保这一点;

assert difficulty >= 1

第3步

我们创建前缀变量使用设定的难度级别.

prefix = '1' * difficulty

请注意,如果难度级别为2,则前缀为"11",如果难度级别为3,则前缀为"111",依此类推.我们将检查生成的消息摘要中是否存在此前缀.为了消化消息本身,我们使用以下两行代码 :

for i in range(1000):
   digest = sha256(str(hash(message)) + str(i))

我们继续添加一个新的数字 i 到每次迭代中的消息哈希并在组合消息上生成新摘要.由于 sha256 函数的输入在每次迭代中都会发生变化,因此摘要值也会发生变化.我们检查此摘要值是否高于前缀.

if digest.startswith(prefix):

如果条件满足,我们将终止 for 循环并返回摘要给来电者的价值.

这里显示的是整个我的代码 :

def mine(message, difficulty=1):
   assert difficulty >= 1
   prefix = '1' * difficulty
   for i in range(1000):
      digest = sha256(str(hash(message)) + str(i))
      if digest.startswith(prefix):
         print ("after " + str(i) + " iterations found nonce: "+ digest)
      return digest

为了您的理解,我们添加了打印摘要的 print 语句值和在从函数返回之前满足条件所需的迭代次数.

测试挖掘函数

测试我们的迷你ng函数,只需执行以下语句 :

mine("test message",2)

当你运行上面的代码时,你会看到类似于下面和下面的输出;

after 138 iterations found nonce:

11008a740eb2fa6bf8d55baecda42a41993ca65ce66b2d3889477e6bfad1484c

请注意,生成的摘要以"11"开头.如果将难度级别更改为3,则生成的摘要将以"111"开头,当然,它可能需要更多次迭代.如您所见,具有更强处理能力的矿工将能够更早地挖掘给定的消息.这就是矿工们为了赚取收入而相互竞争的方式.

现在,我们准备为区块链添加更多区块.让我们在下一章中学习这一点,更多关于python区块链Creating Miners的资料请关注编程网其它相关文章!

--结束END--

本文标题: Python区块链Creating Miners教程

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

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

猜你喜欢
  • Python区块链Creating Miners教程
    目录消息摘要函数挖掘函数第1步第2步第3步测试挖掘函数为了实现挖掘,我们需要开发一个挖掘功能.挖掘功能需要在给定的消息字符串上生成摘要并提供工作证明.让我们在本章讨论这个. 消息摘要...
    99+
    2024-04-02
  • Python区块链块的添加教程
    目录添加第一个区块添加更多块转储整个区块链每个矿工将从先前创建的交易池中获取交易.要跟踪已挖掘的消息数量,我们必须创建一个全局变量 : last_transaction_index ...
    99+
    2024-04-02
  • Python区块链创世块创建教程
    区块链包含彼此链接的区块列表.要存储整个列表,我们将创建一个名为TPCoins : 的列表变量; TPCoins = [] 我们还将编写一个名为 dump_blockcha...
    99+
    2024-04-02
  • Python区块链创建GenesisBlock教程
    我们假设TPCoins的发起人最初向已知客户 Dinesh 发出500个TPCoins.为此,他首先创建一个Dinesh实例 : Dinesh = Client(...
    99+
    2024-04-02
  • Python区块链创建BlockClass教程
    一个块由不同数量的事务组成.为简单起见,在我们的例子中,我们假设该块由固定数量的事务组成,在这种情况下为3.由于块需要存储这三个事务的列表,我们将声明一个名为 verifi...
    99+
    2024-04-02
  • Python区块链交易类教程
    目录创建 Transaction 类测试交易类创建 Transaction 类 在本章中,让我们创建一个 Transaction&n...
    99+
    2024-04-02
  • python区块链创建多个交易教程
    目录创建多个交易显示事务交易队列创建多个客户端创建第一个事务添加更多交易转储交易创建多个交易 各个客户进行的交易在系统中排队;矿工从这个队列中获取交易并将其添加到块中.然后他们将挖掘...
    99+
    2024-04-02
  • Python区块链客户端类开发教程
    目录开发客户端客户端类客户端测试客户端开发客户端 客户是持有TPCoins并从网络上的其他供应商处交换商品/服务的客户,包括他自己的.我们应该为此目的定义 Client&n...
    99+
    2024-04-02
  • Python区块链范围结论及GenesisBlock的添加教程
    目录Genesis Block添加结论Genesis Block添加 将块添加到区块链包括将创建的块附加到我们的 TPCoins 列表. TPCoins.appe...
    99+
    2024-04-02
  • Python区块链块怎么添加
    这篇文章主要介绍了Python区块链块怎么添加的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python区块链块怎么添加文章都会有所收获,下面我们一起来看看吧。每个矿工将从先前创建的交易池中获取交易.要跟踪已挖...
    99+
    2023-06-30
  • Python如何构建区块链
    区块链区块链是在计算机网络的节点之间共享数据的分类账(分布式数据库)。作为数据库,区块链以电子格式储存信息。区块链的创新之处在于它保证了数据记录的安全性和真实性,可信性(不需要没有可信任的第三方)。区块链和典型数据库的区别是数据结构。区块链...
    99+
    2023-05-14
    Python 区块链
  • Python怎么构建区块链
    这篇文章主要介绍了Python怎么构建区块链的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python怎么构建区块链文章都会有所收获,下面我们一起来看看吧。区块链区块链是在计算机网络的节点之间共享数据的分类账(...
    99+
    2023-07-06
  • Python区块链数据分析:挖掘区块链数据的价值
    区块链是一种分布式数据库,用于维护数字货币或其他资产的所有权记录。区块链数据是公开的,可以被任何人访问和分析。通过对区块链数据的分析,可以提取出有价值的信息,这些信息可以帮助企业和个人做出明智的决策。 Python区块链数据分析工具 有...
    99+
    2024-02-23
    区块链 数据分析 Python 比特币 以太坊
  • Python区块链项目实战教程:从零开始到项目落地
    一、准备工作 首先,我们需要安装必要的开发工具和库。Python是本文推荐的编程语言,因为它具有简洁、易读的语法,并且拥有丰富的库和第三方包。 安装Python pip install python 安装必要的库 pip ins...
    99+
    2024-02-23
    Python 区块链 项目实战 区块链编程 区块链开发
  • Python区块链入门项目:探索区块链技术实战应用
    区块链技术因其去中心化、透明不可篡改、安全可靠等特性,在金融、供应链、物联网等领域得到广泛应用。对于初学者而言,想要入门区块链技术,往往会遇到一些困难,比如缺乏编程基础、缺少实际项目经验等。本文将介绍如何使用Python语言实现一个简单...
    99+
    2024-02-23
    Python 区块链 区块链入门 区块链项目 实战教程
  • 从0编写区块链之用python解释区块链最基本原理
    人工智能和区块链诞生至今已经有了十几年,当这些技术出现时,人们都说他们会改变世界,但至今为止,这两项技术对现实的影响依然有限。从技术上看人工智能的原理其实是从大量数据中寻找规律或模式...
    99+
    2024-04-02
  • Python区块链开发指南:一文读懂区块链原理与实现
    区块链基本原理 区块链是一种分布式数据库,它将数据存储在多个节点上,而不是存储在一个中央服务器上。这使得区块链具有很强的安全性,因为攻击者无法通过攻击一个节点来窃取数据。 区块链中的数据以区块的形式存储。每个区块包含一个哈希值、前一个区...
    99+
    2024-02-23
    区块链 Python 分布式账本 智能合约 数字货币
  • Python区块链开发技巧:让你的区块链项目脱颖而出
    Python是一种简单易学、功能强大的编程语言,非常适合区块链开发。Python拥有丰富的库和工具,可以帮助你快速构建区块链项目。在本文中,我们将分享一些Python区块链开发技巧,帮助你创建出色的区块链项目。 一、使用正确的工具 Py...
    99+
    2024-02-23
    Python 区块链 开发技巧 智能合约 dApp
  • Python区块链项目实战:一步步打造自己的区块链应用
    1. 什么是区块链? 区块链是一种分布式账本技术,它允许多个参与者在没有中央权威机构的情况下安全地记录和共享数据。区块链由一系列块组成,每个块都包含一组交易和相关的信息,如时间戳、哈希值和前一个块的哈希值。当一个新的区块被添加到区块链中时...
    99+
    2024-02-23
    区块链 比特币 以太坊 智能合约 分布式账本
  • python区块链实现简版网络
    目录说明引言区块链网络kademlia发现协议简化协议消息TCP服务端TCP客户端P2P服务器连接节点RPC测试区块同步方式问题总结说明 本文根据https://github.com...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作