python手机区块链,初学者用Python搭建区块链
最好的学习方法是通过模仿别人,从而学会再优化迭代。如果你是第一次编码区块链,可以跟我一起学习。
迄今为止,选择哪种语言和使用哪种解释器来搭建区块链项目的过程是这一努力中最困难的部分。之所以选择Python,是因为它对初学者来说很简单,并且对于高级编码同时有效。
1.环境配置
我下载了Python 3.9与PyCharm,PyCharm界面简单,适用于所有级别。我尝试编写简单的命令,直到对PyCharm满意为止。现在,可以构建一个区块链项目了。
2.搭建实战
如果你是第一次编码,我强烈建议你跟着视频或文章教程一起学习。它帮助我掌握了自己在写什么以及为什么要写它。
首先,我导入了hashlib和datetime,让我们分别计算哈希和时间戳块。
导入是将代码从一个模块传输到另一个模块的修改。如果没有datetime导入,我的区块链将无法处理时间戳,或者如果没有hashlib导入,则无法创建哈希。
区块链包含两个类:Block类和Blockchain类。使用Block类,添加到区块链的每个块都具有相同的模型。
积木类
该块必须包含以下属性:
块的编号,其设置为0,因为它是链中的第一个块,称为Genesis块数据,设置为无
接下来,设置为无。这充当指向下一个块的指针,该块继续保持链接的趋势。
哈希,设置为无。区块的哈希至关重要,因为它是加密技术的一部分,使区块链变得如此安全和不可变。
随机数,设置为0。随机数是一遍又一遍地迭代直到找到“ Golden Nonce”的随机整数。在工作量证明中,矿工竞相首先找到合适的哈希。随机数变化多次,直到它有助于生成正确的哈希。这样就完成了对块的验证,并且可以将块添加到链中。
前一个哈希,设置为0x0。存储前一个区块的哈希值会使区块链不可变,因为更改一个区块的哈希值会影响所有后续区块。
时间或时间戳记,描述了交易发生并用于同步网络中所有块的时间。
所述块类,其确定标准加入到链中的每个块
当我们创建一个块时,我们存储它的数据。构造函数init初始化类的属性。自身和数据表示将包含在对象(块)中的内容。
散列
下一步是添加哈希函数,该函数计算块的哈希。
在现时的数据,在前面的哈希的时间戳和块编号放入一个字符串,并运行通过SHA-256的功能。SHA-256是通常用于区块链的密码哈希算法。“ h ”是使用SHA-256的变量。因为我在代码的开头导入了hashlib,所以可以使用SHA-256。散列函数中所有组件的总和将创建块的散列,当创建新块时,该散列将添加到散列字段中。
图片的最后一行告诉你将在输出中显示的内容或打印的内容。在这种情况下,输出将显示块的哈希值和块编号。
区块链类
下一步是创建代码的第二个类:Blockchain类。区块链类包括:
难度设置为20。通过增加难度,我们有效地减小了目标范围。减小目标范围将使挖掘区块变得更加困难,这在处理具有许多节点来查找可接受的哈希的网络时非常有用。
最大随机数,设置为2的32的幂,这是可以存储在32位数字中的最大数字。随机数必须小于要接受的目标数。
目标数,将2设置为256的幂减去难度。在这种情况下,难度为20。
区块链中的第一个块是Genesis块,如第34行所示。现在,我完全陷入了下一行代码:dummy = head = block。任何链接列表的开始都称为head。由于链接列表的开头是Genesis块,因此我们将其记为head = block。^ h H但是,仅此还不够具体, -在Python中,对象是通过引用传递。然后,head和block会指向同一件事。必须在head变量之前写入一个随机变量(在本例中为dummy),以告诉计算机head并不与block指向同一对象。
添加块
我们将继续这样的想法,即区块链是add函数的链表,用于将块添加到链中。
借助哈希,区块链将其作为链表的形状。哈希将块绑定在一起,使其不可变。前一哈希(线39)必须目前在列表的顶部被设置成等于该块。然后,将新块设置为等于当前块加一,如代码第三行所示。
矿业挖掘
接下来,我添加了一个挖掘功能。我使用了工作量证明共识机制,例如比特币。为了将块添加到链中,节点尝试不同的随机数,直到发现散列小于目标范围。
46行开始循环。首先,设置一些猜测准则(范围),即从0到最大随机数。通过检查当前块的哈希值是否小于或等于目标,它在第47行继续。哈希值必须在Python中转换为整数,因此必须转换为int。如果哈希值低于目标值,则该过程继续,并且可以添加该块(第48行)。接下来,打印块,最后,我们暂停一下开采。但是,如果哈希值不小于目标数,则将1加到随机数上,然后重试。
我们以在第56行开始的循环结束代码。它计算10个随机块。你可以试一下数字,但是它始终会停在你插入的整数上。
第60行提示打印10个块,你就可以看到它的实际效果。仅用61行,你就创建了一个可以生成块,计算散列并将其放在一起的区块链。
python手机区块链,初学者用Python搭建区块链相关推荐
- 区块链教程(四):搭建私链、web3.js基础
注:本教程为技术教程,不谈论且不涉及炒作任何数字货币 区块连教程(一):前置知识-linux补充 区块链教程(二):基础概念介绍 区块链教程(三):Solidity编程基础 区块链教程(四):搭建私链 ...
- python搭建区块链,初学者用Python搭建区块链
最好的学习方法是通过模仿别人,从而学会再优化迭代.如果你是第一次编码区块链,可以跟我一起学习. 迄今为止,选择哪种语言和使用哪种解释器来搭建区块链项目的过程是这一努力中最困难的部分.之所以选择Pyth ...
- python容易学ma_初学者学python 初学者学python好学吗
初学者学python 初学者学python好学吗 初学者学python好学吗?Python是最容易入门的编程语言,没有之一.如果初学者接触的第一门语言是C或者C++,对他们来说最难的不是语法,而是容易 ...
- python手机app开发_利用python开发app实战的方法
我很早之前就想开发一款app玩玩,无奈对java不够熟悉,之前也没有开发app的经验,因此一直耽搁了.最近想到尝试用python开发一款app,google搜索了一番后,发现确实有路可寻,目前也有了一 ...
- 学完python的心得体会,初学者对python的感想
如何学习Python总结之谈 学习python主要是自学或者报班学习的方式,但不建议自学.如果想通过学习python改行,那就需要明确一下自己的方向. 因为python编程有很多方向,有网络爬虫.数据 ...
- python手机版下载372-Mac下python环境的安装
life is short, you need python. windows操作系统下相关环境安装比较繁琐,而linux则相对来说对新手比较不友好,再加上mac是我的第一台pc,所以我自然选择其作为 ...
- python手机版3.7_【Python最新版】Python官方下载 v3.7.3 中文版-开心电玩
软件介绍 Python最新版是一款支持跨平台的计算机编程语言,刚开始只是用于自动脚本开发,后来经过开发者的不断更新和添加新功能,现在主要应用于互联网开发.人工智能编程.软件开发等大型项目领域,而且相对 ...
- python sorted下标_初学者掌握python 列表需要知道的操作
为了感谢大家对"Python客栈"的关注与支持,我们每天会在留言中随机抽取三位粉丝发放6.6元小红包.快来参与吧!前些日子我们介绍了 python中基本的数据结构--元组,今天我们 ...
- python手机编程软件-手机上Python编程的软件分享
这里介绍一个软件-QPython3,集成了Python3解释器,既可以命令行运行Python,还可以编辑源文件后运行,支持代码高亮.语法检查等功能,下面我简单介绍一下这个软件的安装和使用: 下载QPy ...
最新文章
- Linux内核分析--理解进程调度时机、跟踪分析进程调度和进程切换的过程
- mac本机 Linux服务器anaconda安装
- 分级加权打分算法 java_推荐算法炼丹笔记:令人着迷的时间动态CF算法
- C语言关键字 - 铁布衫:const
- 2.3.2 进程互斥的软件实现方法
- 为什么重写equals()和hashcode()
- CRMEB系统使用协议
- 【英语学习】【Level 07】U02 Live Work L4 Welcome to my neighborhood
- python 代码命令大全-Linux命令大全
- 2016阿里技术论坛,阿里技术大神的互联网趋势分享
- iOS 处理图片的一些小 Tip
- (转)智能投顾只能这么搞!美国证监会发15页指南
- Python requests+BeautifulSoup 采集 安居客_新房信息
- 【selenium 模拟拼图】滑动拼图验证码10分钟教程
- VS中打开C项目源文件、头文件分类文件夹不见了?这样操作打开!
- 网络安全测试工程师职能
- 3、RDA8910(4GCAT1)CSDK二次开发:GPIO输入详解
- 哈希算法SHA1,SHA256,SHA384,SHA512
- 黑帽seo收徒之 微信视频号创作 变现
- 大学web基础期末大作业~仿品优购商城页面制作(HTML+CSS+JavaScript)