小白都能看懂,用Python来实现一个区块链,就这么简单

python开发以太坊应用(使用web3) 目录 第一章,初识以太坊 第二章,以太坊之简易开发流程 第三章,以太坊之账户管理 第四章,以太坊之状态与交易 第五章,以太坊之智能合约 第六章,以太坊之过滤器 正文 ** 第一章,初识以太坊 ** 第一章 属于概述性的内容,暂时不写。以后补充上来。 ** 第二章,以太坊之简易开发流程 ** 在这一章,我们将完成一个简单的控制台应用,学习如何在命令行和在python中访问以太坊节点,并打... 阅读详情

最近区块链又开始火起来来啦,翻出一篇我一年前写的文章,其实对于我们码农来说,除了平时埋头苦干,对新技术需要保持一定敏感性!每一种新的技术的出现都和未来的产业发展非常相关,蕴含着巨大的机会,除了干活还要扩张自己的眼界,对自己大有裨益!

那作为当下最火的语言Python,其实可以干很多事情,今天我们用Python来简单的实现一个区块链吧,想想都觉得很酷!

640?wx_fmt=jpeg

640

1

什么是区块

首先区块链就是一种去中心化的分布式账本数据库,简单说就是一组区块组合的链条。那么里面每一个单元就是区块:

640图片来源于天善学院

区块上面有几个重要的属性:一个数据data,一个pre_hash和自身的hash:

640

1).我们用hashlib这个库函数来处理hash计算操作

2).新建一个Block类,来表示区块,里面有两个属性(一个pre_hash,一个data)

3).这个为了简便用了类属性@property装饰器来除了hash的值,即当我用block.hash=xxx的时候,会系统自动调用这个hash函数。

4).这个hash函数很关键,以为你区块链里面的都是用sha256来加密的,也是安全性比较高的一种加密方式,我们最后会得到一个十六进制数据字符串值。

区块中有一个非常特殊,就是创世区块!它是所有区块里面的头,他是父区块,因此没有pre_hash

#创世区块
#其中第一个区块,也叫创世区块,它是一个特殊的区块,没有父区块

def create_genesis_block():
    return Block(data="Genesis Block",prev_hash="")

左右滑动代码

640

2

定义一个区块链

我们上面已经定义了区块,下面来定义一个区块链,把一个一个区块连起来!

640

我们需要再写一个类,用一个列表把一个一个区块存起来,形成一个列表链!

640

1).我们声明一个BlockChain的类,然后里面设置一个blocks列表数据结果,用来存放区块,先把父区块链放进去

2).增加一个add_block函数,用来添加区块:

  • 先生成一个新的区块内存

  • 然后添加data和它的hash值

  • 最后把区块添加到区块链中

640

3

实现区块链

我们的区块和区块链都已经准备好了,是不是有点小兴奋,大名鼎鼎的区块链,Python几十行代码就模拟出来了,Python确实快速开发的神奇,我们来看一下效果:

640

>>

Prev Hash:

Data:Genesis Block

Hash:89eb0ac031a63d2421cd05a2fbe41f3ea35f5c3712ca839cbf6b85c4ee07b7a3

--------------------------------------------------------------------------------

PrevHash:89eb0ac031a63d2421cd05a2fbe41f3ea35f5c3712ca839cbf6b85c4ee07b7a3

Data:Jack send 1 BTC to Sam

Hash:ad3ebab374b25e6f3d4f0f14465ff3f86020ce036b5b538c2a506de800dac524

--------------------------------------------------------------------------------

PrevHash:ad3ebab374b25e6f3d4f0f14465ff3f86020ce036b5b538c2a506de800dac524

Data:Sam send 2 BTC to lili

Hash:f9ba725838192731e73b8f28b33c88be9798c314ea7a538fc77e80039413b872

--------------------------------------------------------------------------------

看我们一共创建了3个区块:

第一个区块:是父区块,没有pre_hash,只有数据和一串hash码

第二个区块:是 "Jack发送1个比特币给Sam"它的区块的pre_hash指向前面的父区块hash码

第三个区块:是"Sam发送了2个比特币给lili"它的区块的pre_hash指向前面的Jack区块

640

4

区块链的不可篡改

看完前面基本是不是对区块链有了一个感性的认识,那么区块链最牛逼的地方就是不可篡改,为啥这么说呢?

640

比如我们修改了中间的一个区块的内容,会到时它的hash改变,那么后面的区块的pre_hash就会和前面的区块的里面hash对应不起来!

我们用代码看一下:

640

我把第二个block里面的数据改一下,随便改一下里面的内容。然后我们看一下这个block里面的hash的变化:

Prev Hash:

Data:Genesis Block

Hash:89eb0ac031a63d2421cd05a2fbe41f3ea35f5c3712ca839cbf6b85c4ee07b7a3

Valid Block

--------------------------------------------------------------------------------

PrevHash:89eb0ac031a63d2421cd05a2fbe41f3ea35f5c3712ca839cbf6b85c4ee07b7a3

Data:Jack send 1.3 BTC to Alice

Hash:ec7b877b3a47a74ababf298e047352e8805fed3fa99ad15ab788ec47a70776d0

Valid Block

--------------------------------------------------------------------------------

PrevHash:ad3ebab374b25e6f3d4f0f14465ff3f86020ce036b5b538c2a506de800dac524

Data:Sam send 2 BTC to lili

Hash:f9ba725838192731e73b8f28b33c88be9798c314ea7a538fc77e80039413b872

Invalid Block

--------------------------------------------------------------------------------

因为修改了第二个区块的内容,里面hash值也随着改变,这样的后面的区块就无法和前面的区块的hash对应起来,这就是区块链的不可篡改性!因为是用sha256加密的方法,那怕改动一点点都不行!

好了,上面就是用Python简单入门区块链,还没有加入挖矿(工作量证明)的环节,这次通过Python语言本身来理解区块链,不知道大家感觉如何,欢迎留言讨论!

往期趣味:

区块链联盟链PlatONE的权限模型介绍 PlatONE是万向区块链与合作伙伴联合打造的区块链联盟链,支持隐私计算。本文为PlatONE的权限模型介绍。 根据系统中的不同实体对象,PlatONE将权限管理进行了模块化的拆分。针对系统中用户账户、节点和智能合约这三类实体,分别设计了用户角色管理模块、节点管理模块和合约防火墙模块来进行权限的控制和管理。 角色管理模块:用于管理用户在链上的权限 节点管理模块:用于管理区块链网络中的节点 合约防火墙模块:实现接口级别的合约访问权限 1. 角色管理 PlatONE中每种角色对应不同的权限等.. 阅读详情

相关推荐

浅谈python实现简单区块链结构

从技术上来看:区块是一种记录交易的数据结构,反映了一笔交易的资金流向。系统中已经达成的交易的区块连接在一起形成了一条主链,所有参与计算的节点都记录了主链或主链的一部分。

python03011的博客 1476

头歌-信息安全技术-用Python实现自己的区块链、支持以太坊的云笔记服务器端开发、编写并测试用于保存云笔记的智能合约、支持以太坊的云笔记小程序开发基础

头歌-信息安全技术-用Python实现自己的区块链、支持以太坊的云笔记服务器端开发、编写并测试用于保存云笔记的智能合约、支持以太坊的云笔记小程序开发基础

不服输的小乌龟 7215

走进区块链(一):用Python实现第一个区块链小程序

源代码链接:https://github.com/dvf/blockchain 大家好!这是本人踩在巨人的肩膀上,实现的第一个区块链小程序。在实现代码的过程中,我遇到了很多问题,不过,幸好都解决了。在这里,我会尽可能的将操作步骤写得更详细。接下来,让我们一起走进区块链吧! 一、初识区块链 区块链是由不可变的、有顺序记录的区块组成。他们可以包含交易数据、文件数据或者其他你想要记录的数据。不...

每天向前一小步 2935

看完此文再不懂区块链算我输,用Python从零开始创建区块链

如果你还没有听说过 3 点钟区块链群,说明你还不是链圈的人;如果你还没有加入 3 点钟区块链群,说明你还不是链圈的大佬;如果你还没有被 3 点钟区块链群刷屏,说明你还体会不到什么是“币圈一天,人间一年”。 “三点钟区块链”无疑成为了大家春节期间焦虑的根源,而“区块链”注定是 2018 年被持续讨论、关注的行业性热点话题。 3 月 1 日,朱啸虎对正翻涌不断的区块链热潮再次开炮,在朋友圈一张...

weixin_30563319的博客 972

python实现简易区块链

python实现山寨比特币交易系统

weixin_65044661的博客 3293

Python与区块链:构建你的第一个简单区块链应用

本文介绍了如何使用Python构建一个简单的区块链应用。主要内容包括区块链核心概念(区块、链、哈希、共识机制),环境配置(Python和Flask),以及通过代码实现区块链的基本结构(区块类、区块链类)。文章还加入了工作量证明(PoW)机制,并使用Flask搭建了一个简单的区块链网络API,支持挖矿、查看区块链和验证区块链有效性等功能。通过这个示例,读者可以理解区块链的基本工作原理及其实现方式。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 926

50行python代码实现的小区块链

import hashlib as hasher import datetime as date # Define what a Snakecoin block is class Block: def __init__(self, index, timestamp, data, previous_hash): self.index = index se

神棍之路 7万+

【上海大学计算机组成原理实验报告】一、数据传送实验

将58H写入A寄存器//将6BH写入W寄存器//将C3H写入R1寄存器//将C3H写入R1寄存器//了解实验仪器数据总线的控制方式//掌握数据传送的基本原理//掌握各寄存器的结构、工作原理及其控制方法//数据传送实验

HackerKevon的博客 3509

python构建区块链_小白都能看懂,用Python来实现一个区块链,就这么简单

最近区块链又开始火起来来啦,翻出一篇我一年前写的文章,其实对于我们码农来说,除了平时埋头苦干,对新技术需要保持一定敏感性!每一种新的技术的出现都和未来的产业发展非常相关,蕴含着巨大的机会,除了干活还要扩张自己的眼界,对自己大有裨益!那作为当下最火的语言Python,其实可以干很多事情,今天我们用Python来简单的实现一个区块链吧,想想都觉得很酷!1什么是区块首先区块链就是一种去中心化的...

weixin_42651887的博客 2116

实战Nocobase插件开发:如何用yarn pm命令快速创建和测试API接口插件

本文详细介绍了如何使用Nocobase插件开发工具快速创建和测试API接口插件,涵盖从环境配置、插件骨架生成到数据模型定义和接口实现的完整流程。通过yarn pm命令简化开发步骤,帮助开发者高效构建支持CRUD的API插件,适用于低代码平台开发场景。

weixin_29313239的博客 457

六轴机器人正解

采用的是John H.Craig在【机器人学导论】中的改进DH模型 1.六轴坐标系 2.DH参数 i αi−1\alpha_{i-1}αi−1​ ai−1a_{i-1}ai−1​ did_idi​ θi\theta_iθi​初值 1 0 0 0 0 2 -90 a1a_1a1​ 0 -90 3 0 a2a_2a2​ 0 -90 4 -90 a3a_3a3​ d4d...

m0_37581770的博客 2511

用python自己搭建区块链_小白都能看懂,用Python来实现一个区块链,就这么简单...

最近区块链又开始火起来来啦,翻出一篇我一年前写的文章,其实对于我们码农来说,除了平时埋头苦干,对新技术需要保持一定敏感性!每一种新的技术的出现都和未来的产业发展非常相关,蕴含着巨大的机会,除了干活还要扩张自己的眼界,对自己大有裨益!那作为当下最火的语言Python,其实可以干很多事情,今天我们用Python来简单的实现一个区块链吧,想想都觉得很酷!1.什么是区块首先区块链就是一种去中心化的分布式账...

weixin_39693295的博客 378

kaggle注册以及数据集下载全流程

kaggle注册,数据集下载及常见问题

Arriteey的博客 2万+

学习用Python实现简单区块链

Python 实现区块链 环境 python3、postman或者burp、requests、Flask,pipenv

Amire0x的小乐园 2万+

python零基础入门到精通,python入门到精通教程

坚持到了这儿,恭喜你,表示你有做开发的潜力,其实我想说的上面的内容还是刚刚开始,刚开始大家不需要多么精通了解这些内容,除了Python方面的知识,每个部分掌握一点儿能进行基本开发就好,主要是不断练习,让自己跳出「舒适区」,进入「学习区」,但是又不进入「恐慌区」,不断给自己「喂招」。上述这份完整版的Python全套学习资料已经上传优快云官方,朋友们如果需要可以扫描下方二维码免费获取【保证100%免费】

YYmmsss的博客 3443

【水下小目标检测】SWIPENet与样本重加权:应对模糊与噪声的深度学习策略

本文深入探讨了水下小目标检测的挑战与解决方案,重点介绍了SWIPENet网络架构与IMA样本重加权算法。通过空洞卷积模块、特征金字塔重构和多尺度预测机制,SWIPENet有效提升了模糊目标的检测精度。结合Invert Multi-Class Adaboost算法,系统性地解决了水下环境中的样本不均衡问题,在URPC数据集上实现了48.8%的mAP,特别适合海洋生物检测等应用场景。

weixin_29057163的博客 346

20分钟,我用Python实现区块链架构!

文章目录区块链到底多神奇一起动手创建一个极简的区块链为“瘦小的”区块链“增肥”添加POW共识算法开采新的区块测试零基础Python实现区块链架构视频观看地址联系我们 区块链到底多神奇 这是篇技术文,我们会用Python一步步搭建一个完整的区块链。不过,在此之前,咱们还是先说说你什么你该学习如何从零搭建一个区块链 我们可以把区块链看做一个公共数据库,其中新数据存储在一个称为区块的容器中,然后被...

gz_liuhong的博客 8149

[QMT量化交易小白入门]-六十九、ETF动量评分策略,历史年化收益率107%

C . bar_date } 跳过') returnC . bar_date } 跳过') returnC . bar_date } 跳过') return作用:如果当前不是回测模式且不是最后一根K线,则记录日志并跳过本次任务。这是为了避免在实时交易中对尚未完成的数据进行处理。

木头大左的博客 2230

编写一个简单的区块链系统

使用Python构建一个简单的区块链系统 基于区块链核心原理编写的简单实现。原理讲解 确定区块结构 { "index": 区块索引, "previous_Hash": 前一个区块的哈希, "proof": 用于工作量证明的随机数, "timestamp":

分享日常的学习,开展的项目,编写的软件,解决的问题等~ 8105

[Dify] HTTP 请求节点总是调不通?先把请求头、参数、变量和返回 JSON 拆开查

这篇文章围绕 Dify HTTP 请求节点调不通、接口能通但流程不稳定、返回 JSON 后续节点读不到等问题展开,从 Method、URL、Header、Body、变量映射和返回字段提取几个角度梳理排查顺序。适合正在把 Dify Workflow 接入企业微信、CRM、工单系统或内部接口的读者阅读,帮助你把接口调用从一次性跑通推进到可复用、可验证的业务流程。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 3944

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

太简单!只学十分钟,Python菜鸟也能开发一个区块链客户端

区块链技术以其去中心化特性成为又一具有颠覆性特征的技术。Python作为一种面向对象的解释型计算机程序设计语言,因其具有丰富和强大的库,常被称为“胶水语言”,简单、易上...

区块链大本营 1万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

用不到200行的Python代码实现一个区块链

用不到200行的Python代码实现一个区块链 原文:A Python Implementation of a simple blockchain 翻译:无阻我飞扬 摘要:本文来自github,描述了如何用少量的Python代码实现一个简单的blockchain,以下是译文。 描述pysimplechain的实现完全聚焦于哈希账本功能。它不包含任何高级功能,诸如分布式账本或者通过

优快云研发技术 9190

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

基于python实现一个简单区块链

目录单个区块的数据结构区块链的实现类MAIN函数效果展示完整源码 单个区块的数据结构 index: 区块在区块链中的高度(即序号),因为每加一个区块,该index就会加1。 data: 任何需要包括在此区块中的数据。 timestamp: 时间戳。(可用来防止攻击等) hash: 根据区块内容计算的哈希值(SHA256)。 previousHash: 前一个区块的哈希值。方便回溯前面区块。 此处用到了hashlib中的sha256算法用于生成每个区块的哈希值,来确保区块的唯一性。

qq_40933467的博客 1392

python实现简单区块链结构

区块链 比特币从诞生到现在已经10年了,最近接触到了区块链相关的技术,为了揭开其背后的神秘面纱,我就从头开始构建一个简单的区块链。 文章目录区块链一、比特币内部结构二、实现的比特币结构三、代码实现1.定义区块的结构2.创世区块构造3.挖矿函数定义4.定义区块链结构四、代码运行 一、比特币内部结构 比特币内部结构有四部分: previous hash: 上一个区块的hash data:交易数据 time stamp:区块生成的时间戳 nonce:挖矿计算次数 二、实现的比特币结构 index :当前

qq_51212018的博客 1759

Python 实现最简单的区块链

HackPython 致力于有趣有价值的编程教学简介在逛 github 的时候看见这个项目 blockchain,该项目通过 python 实现了最简单...

weixin_30230009的博客 1169

区块链的简单理解以及python的简单实现

最近看了不少关于区块链的资讯, 里面大多数都是在鼓吹这个技术有多么长远的未来. 看得多了, 自然也就产生了想要一探究竟的想法. 但是那些文章里都是些自己造的或者强行翻译过来的各种名词, 并没有具体的例子, 虽然看了但是也不能产生更加清晰的认知. 所以, 在csdn上找了一些简单的区块链示例, 尝试着写了一下. 区块类 区块链, 从名字来理解, 就是区块构成的链条. 到此, 两个基本的类...

luokezhen的博客 9739
上一篇: 不想当将军不是好士兵!送程序员,产品经理都可以读的书
下一篇: 菜鸟都能看懂的爬虫Scrapy入门指南
菜鸟学Python
博客等级 码龄9年 8063粉丝 571原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值