【拿历史上最知名的家族——孔家为例,让梨的孔融是孔子20世孙,民国四大家族的孔祥熙是孔子75世孙】 起源块,一个王朝的太(高)祖,它是一个特殊的块,没有previous_hash。 【运行结果】 欢迎关注,敬请!所谓区块链,信息化的族谱而已——简单区块链python代码示例
何为区块链?

区块链是一个信息技术领域的术语。从本质上讲,它是一个去中心化的共享数据库,信息会通过点对点传输与加密的形式产生数据块,存储于其中的数据或信息,具有“不可伪造”、“全程留痕”、“可以追溯”、“公开透明”、“集体维护”等特征。
区块的特点:
传统的族谱,祖先的区块链
链式结构组成
(index)【序号】——相当于族谱中的世代,孔祥熙是孔子75世孙
(timestamp)【时间戳】——相当于生日,1880年9月11日
(hash)【加密信息】——相当于更新后的族谱
(pre-hash)【以前的加密信息】——相当于以前的旧族谱
(Data)【交易数据】——相当于记账或日记信息,比如满月宴请客XX桌、来了XX客人、收了XX礼金……起源块(创世区块)
【比特币创世区块】记录的信息(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 = index self.timestamp = timestamp # 由竞争机制(挖矿、解方程)获得记账权的数据库(节点),来添加时间戳 # data可以是想记录的任意事情(记账、笔记、合同),一旦后面追加了新的区块,就成了新块的previous(历史、经历)一部分 self.data = data self.previous_hash = previous_hash self.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 # 前面区块索引+1 this_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) # 测试代码 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_block str_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 总结
返回顶部
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算
官方软件产品操作指南 (170)