[Python Study Notes]一个简单的区块链结构(python 2.7)
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
>>文件: csv文件操作.py
>>作者: liu yang
>>邮箱: liuyang0001@outlook.com
>>博客: www.cnblogs.com/liu66blog ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' # !/usr/bin/env python2.7
import hashlib as hasher
import datetime as date class Block:
def __init__(self, index, data, time, previous_hash):
self.index = index
self.data = data
self.time = time
self.previous_hash = self.hash_block() def hash_block(self):
sha = hasher.sha256()
sha.update(str(self.index) + str(date) + str(self.time) + str(self.previous_hash))
return sha.hexdigest() '''区块链的起源块'''
def create_genesis_block():
# 初始化一个区块
return Block(index=0, time=date.datetime.now(), data='genesis block', previous_hash='0') '''定义下一个区块'''
def next_block(last_block):
this_index = last_block+1
this_time = date.datetime.now()
this_data = '数据'+str(this_index)
this_previous_hash = last_block.hash
return Block(index=this_index, time=this_time, data=this_data, previous_hash=this_previous_hash) if __name__ == '__main__': block_chain = [create_genesis_block()]
previous_block = block_chain[0]
num_of_block = 20
# 添加区块到我们的链上
for i in range(0,num_of_block):
block_to_add=next_block(previous_block)
blockchain.append(block_to_add)
previous_block=block_to_add
print('Block #{} has been added to the chain'.format(block_to_add.index))
[Python Study Notes]一个简单的区块链结构(python 2.7)的更多相关文章
- Python创建一个简单的区块链
区块链(Blockchain)是一种分布式账本(listributed ledger),它是一种仅供增加(append-only),内容不可变(immutable)的有序(ordered)链式数据结构 ...
- Rust 实现一个简单的区块链
一.背景 近期用 Rust 实现了 Jeiwan/blockchain_go,与原项目相比没有加入新的功能,只是换了一个编程语言实现了一遍,源码放在 Github 上. 开发这个项目,花费了好几个周末 ...
- 用 Python 构建一个极小的区块链
虽然有些人认为区块链是一个早晚会出现问题的解决方案,但是毫无疑问,这个创新技术是一个计算机技术上的奇迹.那么,究竟什么是区块链呢? 区块链 以比特币(Bitcoin)或其它加密货币按时间顺序公开地记录 ...
- 只用120行Java代码写一个自己的区块链
区块链是目前最热门的话题,广大读者都听说过比特币,或许还有智能合约,相信大家都非常想了解这一切是如何工作的.这篇文章就是帮助你使用 Java 语言来实现一个简单的区块链,用不到 120 行代码来揭示区 ...
- 只用200行Go代码写一个自己的区块链!
Coral Health · 大约23小时之前 · 220 次点击 · 预计阅读时间 7 分钟 · 不到1分钟之前 开始浏览 区块链是目前最热门的话题,广大读者都听说过比特币,或许还有智能合约,相信大 ...
- 只用120行Java代码写一个自己的区块链-3挖矿算法
在本系列前两篇文章中,我们向大家展示了如何通过精炼的Java代码实现一个简单的区块链.包括生成块,验证块数据,广播通信等等,这一篇让我们聚焦在如何实现 PoW算法. 大家都无不惊呼比特币.以太坊及其他 ...
- 用Java实现简单的区块链
用 Java 实现简单的区块链 1. 概述 本文中,我们将学习区块链技术的基本概念.也将根据概念使用 Java 来实现一个基本的应用程序. 进一步,我们将讨论一些先进的概念以及该技术的实际应用. 2. ...
- 只用200行Go代码写一个自己的区块链!(转)
区块链是目前最热门的话题,广大读者都听说过比特币,或许还有智能合约,相信大家都非常想了解这一切是如何工作的.这篇文章就是帮助你使用 Go 语言来实现一个简单的区块链,用不到 200 行代码来揭示区块链 ...
- 300行ABAP代码实现一个最简单的区块链原型
不知从什么时候起,区块链在网上一下子就火了. 这里Jerry就不班门弄斧了,网上有太多的区块链介绍文章.我的这篇文章没有任何高大上的术语,就是300行ABAP代码,实现一个最简单的区块链原型. 我个人 ...
随机推荐
- img标签显示本地文件
html: <img src="__IMG__/male.png" id="imgfpic1" style="height: 100%; wid ...
- java: i18n语言
<%@ page language="java" contentType="text/html; charset=utf8"%> <%@ pa ...
- Tomcat的bin目录下startup.bat、Tomcat6.exe、Tomcat6w.exe区别
从官方下载了apache-tomcat-6.0.37-windows-x64.zip安装包,解压后bin目录下的startup.bat.Tomcat6.exe.Tomcat6w.exe 3个程序有何区 ...
- spring boot 基础篇 -- 集成接口测试Swagger
一.在pom.xml加入Swagger jar包引入 <dependency> <groupId>io.springfox</groupId> <artifa ...
- java中base64
// 将 s 进行 BASE64 编码 public static String getBASE64(String s) { if (s == null) return null; return (n ...
- 源码编译安装mysql5.6
1.download the source package and unzip to the destination dir http://mirror.switch.ch/mirror/mysql/ ...
- C#多线程操作
static void Main(string[] args) { Thread thread = Thread.CurrentThread; thread.Name = "Main Thr ...
- (转)轻量级C语言实现的minixml解析库入门教程
svn上的minixml源码下载:svn co http://svn.msweet.org/mxml/tags/release-2.7/ 按照下载回来的源代码进行编译和安装.本教程只针对新手做一个引导 ...
- Spring转账业务_XML配置事物控制
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- SVM模型进行分类预测时的参数调整技巧
一:如何判断调参范围是否合理 正常来说,当我们参数在合理范围时,模型在训练集和测试集的准确率都比较高:当模型在训练集上准确率比较高,而测试集上的准确率比较低时,模型处于过拟合状态:当模型训练集和测试集 ...