欢迎关注,敬请点赞!

所谓区块链,信息化的族谱而已——简单区块链python代码示例

  • 何为区块链?
    • 区块的特点:
  • 传统的族谱,祖先的区块链
    • 链式结构组成
    • 起源块(创世区块)
  • python区块链代码示例
  • 总结

何为区块链?


区块链是一个信息技术领域的术语。从本质上讲,它是一个去中心化的共享数据库,信息会通过点对点传输与加密的形式产生数据块,存储于其中的数据或信息,具有“不可伪造”、“全程留痕”、“可以追溯”、“公开透明”、“集体维护”等特征。

区块的特点:

  • data很难篡改,除非控制整个区块链网络50%以上的分布式数据库,才能修改。
  • 区块越多,传播越广泛,修改整条链需要的算力CPU/GPU越多。
  • 安全的代价,非常冗余。

传统的族谱,祖先的区块链

返回顶部

链式结构组成

【拿历史上最知名的家族——孔家为例,让梨的孔融是孔子20世孙,民国四大家族的孔祥熙是孔子75世孙】
(index)【序号】——相当于族谱中的世代,孔祥熙是孔子75世孙
(timestamp)【时间戳】——相当于生日,1880年9月11日
(hash)【加密信息】——相当于更新后的族谱
(pre-hash)【以前的加密信息】——相当于以前的旧族谱
(Data)【交易数据】——相当于记账或日记信息,比如满月宴请客XX桌、来了XX客人、收了XX礼金……

起源块(创世区块)

起源块,一个王朝的太(高)祖,它是一个特殊的块,没有previous_hash。
【比特币创世区块】记录的信息(Data):“The Times 03/Jan/2009 Chancellor on brink of secondbailout for banks.【2009年1月3日,财政大臣正处于实施第二轮银行紧急援助的边缘。】”

python区块链代码示例

返回顶部

import hashlib  # 导入哈希(散列)加密模块
import datetime as dtime  # 导入时间模块class Block:  # 定义一个区块类# index(排行)、timestamp(生日)、data(大胖小子/贴心小棉袄)、previous_hash(相当于祖先信息)以及加密信息摘要def __init__(self, index, timestamp, data, previous_hash):self.index = indexself.timestamp = timestamp  # 由竞争机制(挖矿、解方程)获得记账权的数据库(节点),来添加时间戳# data可以是想记录的任意事情(记账、笔记、合同),一旦后面追加了新的区块,就成了新块的previous(历史、经历)一部分self.data = dataself.previous_hash = previous_hashself.hash = self.hash_block()def hash_block(self):sha = hashlib.sha256()  # sha256加密算法接口的一种# 对索引、时间戳、信息和前一区块的哈希值进行加密sha.update(f"{self.index}{self.timestamp}{self.data}{self.previous_hash}".encode('utf-8'))return sha.hexdigest()  # 返回16进制的信息摘要# 第一个块的函数,或者说是起源块(创世区块)。
def create_gensis_block():return Block(0, dtime.datetime.now(), "1957年,约翰·巴科斯(John Backus)创建了是全世界第一套高阶语言:FORTRAN。", "0")# 模拟要添加的信息
data_list = ['1964年,约翰·凯梅尼(John Kemeny)和托马斯·库尔茨(Thomas Kurtz)共同开发了BASIC程序语言。','1970年,尼克劳斯·维尔特(Niklaus Wirth)发明了Pascal。','1972年,丹尼斯·里奇(Dennis MacAlistair Ritchie)制作带有花括号的C。','1983年,比雅尼·斯特劳斯特鲁普(Bjarne Stroustrup)发明了C++。','1991年,吉多·范罗苏姆(Guido van Rossum)发明了Python。','1995年,布兰登·艾克(Brendan Eich)设计了JavaScript(原名LiveScript)。','1996年,詹姆斯·高斯林(James Gosling)发明了Java。']# 添加后面区块的函数
def next_block(pre_block, n):  # 前面块的区块(索引和哈希)作为参数this_index = pre_block.index + 1  # 前面区块索引+1this_timestamp = dtime.datetime.now()  # 当前时间戳,也可以time.time()this_data = data_list[n]  # 需要记录的相关信息this_hash = pre_block.hash  # 前面块的编码信息return Block(this_index, this_timestamp, this_data, this_hash)# 测试代码
if __name__ == '__main__':pre_block = create_gensis_block()  # 创世区块str_gensis = f"{pre_block.index}---{pre_block.timestamp}---{pre_block.data}---{pre_block.hash}"print(str_gensis)nums = len(data_list)for i in range(nums):add_block = next_block(pre_block, i)  # 增加后续区块pre_block = add_blockstr_add = f"{pre_block.index}---{pre_block.timestamp}---{pre_block.data}---{pre_block.hash}"print(str_add)

【运行结果】

0---2020-04-29 16:51:55.328838---1957年,约翰·巴科斯(John Backus)创建了是全世界第一套高阶语言:FORTRAN。---eee2a1bc47f2de44f14bdb37a40ae8806b16ac99670bc3bcc9d76c274a79f3a8
1---2020-04-29 16:51:55.329830---1964年,约翰·凯梅尼(John Kemeny)和托马斯·库尔茨(Thomas Kurtz)共同开发了BASIC程序语言。---3b8e76002244de23bd8636111a52c5500ba791a09c7762fb654284ce59557a96
2---2020-04-29 16:51:55.329830---1970年,尼克劳斯·维尔特(Niklaus Wirth)发明了Pascal。---419bd1cfd54544d8b4d2b022cad3619916ecbe9f1ef423e8cfdc9dc9f7e40466
3---2020-04-29 16:51:55.329830---1972年,丹尼斯·里奇(Dennis MacAlistair Ritchie)制作带有花括号的C。---02fc182ed17189db671d516f2327e0803d51f675e0df095fa6a2599647932f13
4---2020-04-29 16:51:55.329830---1983年,比雅尼·斯特劳斯特鲁普(Bjarne Stroustrup)发明了C++。---9f2b6646c68afbebaa98d8dcbfca999ac840e6d4757a2187828b734baea48d3b
5---2020-04-29 16:51:55.329830---1991年,吉多·范罗苏姆(Guido van Rossum)发明了Python。---cb71fe7a95a49adddac762f266b2dbb4a82d381ea14dfcd7aa83fff7020b072a
6---2020-04-29 16:51:55.329830---1995年,布兰登·艾克(Brendan Eich)设计了JavaScript(原名LiveScript)。---236dd1f06440ca95e0f8921f753ef708b1ff3acbbf2520792252fe88068c3e43
7---2020-04-29 16:51:55.329830---1996年,詹姆斯·高斯林(James Gosling)发明了Java。---60538287422bccf76fca17bf78b7fb72a096384acf6137103183f65cf7bb0915

总结

  1. 区块链难篡改,但信息冗余。
  2. 区块链的链式结构,和过去的族谱很像。

欢迎关注,敬请点赞!
返回顶部

所谓区块链,信息化的族谱而已——简单区块链python代码示例相关推荐

  1. 八叉树 java_java简单实现八叉树图像处理代码示例

    一晃工作有段时间了,第一次写博客,有点不知道怎么写,大家将就着看吧,说的有什么不正确的也请大家指正. 最近工作中用到了一个图像压缩的功能.找了一些工具,没有太好的选择.最后选了一个叫jdeli的,奈何 ...

  2. 简单几段python代码_如何用python跑一段鸿蒙最简单代码?

    首先,鸿蒙并不支持python,HarmonyOS代码开发支持多语言,包括Java.XML(Extensible Markup Language).C/C++ . JS(JavaScript).CSS ...

  3. sql 行转列_想要表格行转列?简单几行Python代码搞定

    前言数据的行转列操作,在实际工作过程中应用非常广泛.由于不同人员.不同部门对数据结构的认识是不大相同的,尤其是从基层人员手里拿到的数据,更是五花八门,横七竖八.比如有这样一张成绩表: 乍一看,好像没毛 ...

  4. php网页留言本过程,PHP实现简单留言本功能代码示例

    这篇文章主要为大家详细介绍了PHP简单留言本功能的实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了PHP留言本功能的具体代码,供大家参考,具体内容如下 index.ph ...

  5. 灰狼优化算法--简单易懂附python代码

    ps:本博文为个人理解,如有错误请不吝赐教 本博文部分引用了 https://blog.csdn.net/haha0332/article/details/8880591*0 1.算法原理:简单的讲, ...

  6. python抠图教程_简单几行Python代码实现8秒抠图的AI神器,根本无需PS(附教程)...

    曾几何时,「抠图」是一个难度系数想当高的活儿,但今天要介绍的这款神工具,只要 3 行代码 5 秒钟就可以完成高精度抠图,甚至都不用会代码,点两下鼠标就完成了. 感受下这款抠图工具抠地有多精细: 是不是 ...

  7. 一个简单的使用支持向量机(SVM)进行回归预测的Python代码示例,包含了源数据和注释

    使用了scikit-learn库中的SVR类来实现支持向量机回归模型.首先,我们导入了所需的库,包括numpy用于处理数据,train_test_split用于划分训练集和测试集,SVR用于构建SVM ...

  8. 【七七八八】简单的对话python代码实现

    例子1: 实现以下兑换货币的对话 背景要求: 小精灵:您好,欢迎来到牛逼哄哄的charming王国,请问您需要帮助吗?需要or不需要? 你:需要 小精灵:请问您需要什么帮助呢?1 存取款:2 货币兑换 ...

  9. 制作圣诞帽其实特简单(附 Python 代码)

    圣诞将至,虽然咱不过这洋节,但是热闹还是要凑一下的,相信已经有很多圣诞帽相关的周边在流传了,今天咱们就自己动手,给头像增加一个圣诞帽. 文章目录 基础知识准备 数字图像 图像通道 ROI和mask 矩 ...

  10. python代码示例500行源代码-500行Python代码打造刷脸考勤系统,其实也就那么简单...

    需求分析 "员工刷脸考勤"系统,采用Python语言开发,可以通过摄像头添加员工面部信息,这里就涉及到两个具体的个问题,一个是应该以什么样的数据来标识每一个员工的面部信息,二是持久 ...

最新文章

  1. RxJava zip 使用
  2. Android Wear开发者预览版入门
  3. php 命名空间地址,php命名空间简介
  4. springmvc教程--RESTful支持详解
  5. mysql数据类型查询命令_Linux命令:MySQL系列之三--mysql数据类型及SQL结构化查询语句使用...
  6. ue4加载本地版本_UE4中的本地化文本Localization Dashboard(多语言版本匹配)
  7. 从域环境搭建到域渗透
  8. H3C通过端口ID决定端口角色
  9. 语言nomogram校准曲线图_医学统计与R语言:Meta 回归作图(Meta regression Plot)
  10. python基础其他(二十一)
  11. windows下PostgreSQL 安装与配置
  12. java+jquery实现长轮询案例_网页实时聊天之js和jQuery实现ajax长轮询
  13. 此时本机的BootLoader程序坏了,也就是说grub第一阶段坏掉了,该如何修复
  14. windows上面运行jar文件,Windows服务器后台运行jar包
  15. Java的高并发编程系列(三)
  16. 推荐一款十分好用的本地查词软件——MDict
  17. Android微信emoji表情,Android 软键盘和emoji表情切换方案,和微信几乎一样的体验...
  18. python多行注释快捷键
  19. 【数理统计】调和平均值
  20. python剪刀石头布_Python Tkinter教程系列01:剪刀石头布游戏

热门文章

  1. html制作网页包涵视频和音频,HTML5 网页音频和视频( 和 )
  2. ps粘贴图片模糊怎么破
  3. Word 尾部空格添加下划线
  4. 通过 BT 种子 Hash 值从 BitComet 服务器上下载种子文件
  5. python饼状图显示其比例_python可视化:matplotlib绘制的饼状图你了解吗?
  6. Excel表格数据如何批量乘以一个数字
  7. 鼠标移上去变小手样式
  8. 判断是否为回文——判断用户输入的字符串是否为回文。回文是指正反拼写形式都是一样的词,譬如“racecar”。
  9. python中判断素数的几种方法
  10. VMware Workstation启动虚拟机时蓝屏