最基本的区块链hello world(python3实现)

源自 用不到 50 行的 Python 代码构建最小的区块链 (英文原文:Let’s Build the Tiniest Blockchain ) ,但是文中的代码是基于python2的,python3环境下需要略做修改,修改后的代码如下:(建议初次接触区块链的同学,先阅读本文最后的参考文章)

import hashlib as hasher
import datetime as date

class Block:
    def __init__(self, index, timestamp, data, previous_hash):
        self._index = index
        self._timestamp = timestamp
        self._data = data
        self._previous_hash = previous_hash
        self._hash = self.hash_block()

    @property
    def hash(self):
        return self._hash

    @property
    def index(self):
        return self._index

    @property
    def data(self):
        return self._data

    def hash_block(self):
        sha = hasher.sha256()
        temp = str(self._index) + str(self._timestamp) + str(self._data) + str(self._previous_hash)
        sha.update(temp.encode("utf8"))
        return sha.hexdigest()

def create_genesis_block():
    return Block(0, date.datetime.now(), "种子区块", "0")

def next_block(last_block):
    this_index = last_block.index + 1
    this_timestamp = date.datetime.now()
    this_data = "我是新区块 " + str(this_index)
    this_hash = last_block.hash
    return Block(this_index, this_timestamp, this_data, this_hash)

block_chain = [create_genesis_block()]
previous_block = block_chain[0]

num_of_blocks_to_add = 20

for i in range(0, num_of_blocks_to_add):
    block_to_add = next_block(previous_block)
    block_chain.append(block_to_add)
    previous_block = block_to_add
    print("Block #{} 已经加入区块链!".format(block_to_add.index))
    print("Hash: {}".format(block_to_add.hash))
    print("Data: {}\n".format(block_to_add.data))

  运行结果:

Block #1 已经加入区块链!
Hash: 403239f4c6fc4d83fb31c07d8c0b98d922e46fe6bcd8e3b05a70b46d5357a3ca
Data: 我是新区块 1

Block #2 已经加入区块链!
Hash: 4e4e233cf54479b221d9a78e9558e4d923fc554366556a783e88798aa58dcdec
Data: 我是新区块 2

Block #3 已经加入区块链!
Hash: 35eef8b63e4e264f34fc557e637a22b6ae804ab75219291ccbae8f0c240e7ae8
Data: 我是新区块 3

Block #4 已经加入区块链!
Hash: 61836d0c9c2b6c394db9ca77fbe2ad19daf63929f0c14e681ce3a3e9e87006e4
Data: 我是新区块 4

Block #5 已经加入区块链!
Hash: c4ed97efd2fb4d97232c048119780e08b7afd99746a4734bd3c91253ffed5ee8
Data: 我是新区块 5

Block #6 已经加入区块链!
Hash: b0f02cc59d9f3f9ec29080938765efaf5d93393632a2968d3026fbf2a02e7e33
Data: 我是新区块 6

Block #7 已经加入区块链!
Hash: 0d285a0f9e902f0fcbaaa657e7ea39d098cd614517a7a66567acb511e7aa2eb3
Data: 我是新区块 7

Block #8 已经加入区块链!
Hash: f461ac428043f328309da7cac33803206cea9912f0d4e8d8cf2786d21e5ff403
Data: 我是新区块 8

Block #9 已经加入区块链!
Hash: 136a6c3f4f10b35515a07d4d4849c13ceae8cbbddb512583ab10d32b73d90d08
Data: 我是新区块 9

Block #10 已经加入区块链!
Hash: 3da8f83f07745e1a955f5f55f75a8708453afb24b5d4686d7dc7658399563a82
Data: 我是新区块 10

Block #11 已经加入区块链!
Hash: c1320b1d9e73843c718a8d708cabe7546ecd7b196afa322bba6836f01d0a078d
Data: 我是新区块 11

Block #12 已经加入区块链!
Hash: 075265e7b007ac2c5c3c1b88bdb0b8553c6330c515f2f584dd355a3ed64e179a
Data: 我是新区块 12

Block #13 已经加入区块链!
Hash: 9d212c6a850e3bbd9fbb99e00f576a4c4896483e8110b80793dc0a711867a7d4
Data: 我是新区块 13

Block #14 已经加入区块链!
Hash: 97978b45405867ccf724e7f8498f6c69cc4dbf24adb41e95f35ca650cd79d987
Data: 我是新区块 14

Block #15 已经加入区块链!
Hash: 7c3e7ad8a9d8042de861bfbff6d3c2154b1ec23442ea0ee20a7b00cdf25a1164
Data: 我是新区块 15

Block #16 已经加入区块链!
Hash: bc4fbcd63e038674f18c83bc5460bdcc538c8b0f834019bf358eb6534f322e1a
Data: 我是新区块 16

Block #17 已经加入区块链!
Hash: 36688e8a3bd29f940b4528f460a92d0dc410fc14b6e2edfd834238c18c71dafa
Data: 我是新区块 17

Block #18 已经加入区块链!
Hash: 050a08c4137e05a0b90f842aea5534e5c8a80333e384eeeda5d5913849c741cd
Data: 我是新区块 18

Block #19 已经加入区块链!
Hash: c47c5707875d7dcf125b1a448b5cbe8fbe125614e48d87e14b7d2c853e1bc3fa
Data: 我是新区块 19

Block #20 已经加入区块链!
Hash: 4d7bef7ed5d4afff9b3eaf33219be49f33f32476ad21f1ab6c2d70635078461a
Data: 我是新区块 20

当然这只是最基本的“数据结构”级别的hello world,方便大家理解区块链的数据结构而已,真正区块链中的挖矿速度控制(10分钟1个块)、分叉处理(最先达到6个块的分叉胜出) 这些都没有考虑进去。

参考文章:

中本聪的论文(中文翻译)

阮一峰:区块链入门教程

原文地址:https://www.cnblogs.com/yjmyzz/p/block-chain-hello-world.html

时间: 2024-08-05 00:57:52

最基本的区块链hello world(python3实现)的相关文章

区块链技术从入门到精通

详情请交流  QQ  709639943 01.区块链技术从入门到精通 02.2017年新生大学区块链视频教程 03.Node.js入门到企业Web开发中的应用 04.精通高级RxJava 2响应式编程思想 05.Java秒杀系统方案优化 高性能高并发实战 06.Java深入微服务原理改造房产销售平台 07.快速上手Linux 玩转典型应用 08.快速上手Ionic3 多平台开发企业级问答社区 09.Java Spring Security开发安全的REST服务 10.深入Java虚拟机(JVM

用Python从零开始创建区块链

本文主要内容翻译自Learn Blockchains by Building One本文原始链接,转载请注明出处.作者认为最快的学习区块链的方式是自己创建一个,本文就跟随作者用Python来创建一个区块链. 对数字货币的崛起感到新奇的我们,并且想知道其背后的技术--区块链是怎样实现的. 但是完全搞懂区块链并非易事,我喜欢在实践中学习,通过写代码来学习技术会掌握得更牢固.通过构建一个区块链可以加深对区块链的理解. 准备工作 本文要求读者对Python有基本的理解,能读写基本的Python,并且需要

用 Python 撸一个区块链

本文翻译自 Daniel van Flymen 的文章 Learn Blockchains by Building One 略有删改.原文地址:https://hackernoon.com/learn-blockchains-by-building-one-117428612f46 相信你和我一样对数字货币的崛起感到新奇,并且想知道其背后的技术——区块链是怎样实现的. 但是理解区块链并非易事,至少对于我来说是如此.晦涩难懂的视频.漏洞百出的教程以及示例的匮乏令我倍受挫折. 我喜欢在实践中学习,通

数字货币和区块链联系

相信你和我一样对数字货币的崛起感到新奇,并且想知道其背后的技术--区块链是怎样实现的. 但是理解区块链并非易事,至少对于我来说是如此.晦涩难懂的视频.漏洞百出的教程以及示例的匮乏令我倍受挫折. 我喜欢在实践中学习,通过写代码来学习技术会掌握得更牢固.如果你也这样做,那么读完本文,你将获得一个可用的区块链以及对区块链的深刻理解. 开始之前... 首先你需要知道区块链是由被称为区块的记录构成的不可变的.有序的链式结构,这些记录可以是交易.文件或任何你想要的数据,最重要的是它们是通过 Hash 连接起

看了这个对区块链有了些了解

转自https://www.2cto.com/kf/201803/727574.html 如果你还没有听说过 3 点钟区块链群,说明你还不是链圈的人;如果你还没有加入 3 点钟区块链群,说明你还不是链圈的大佬;如果你还没有被 3 点钟区块链群刷屏,说明你还体会不到什么是"币圈一天,人间一年". "三点钟区块链"无疑成为了大家春节期间焦虑的根源,而"区块链"注定是 2018 年被持续讨论.关注的行业性热点话题. 3 月 1 日,朱啸虎对正翻涌不断的

区块链入门与去中心化应用实战

第1章 课程简介与学习安排 本章主要介绍为什么要开设这门课,课程目标是什么,谁适合学习这门课以及学习这门课需要哪些要求,然后详细介绍本课程要讲的主要内容,希望通过这章的学习,可以让大家对课程有一个整体的,清晰的了解. 第2章 区块链技术的核心概念和原理 本章会讲解比特币的由来,比特币概念及原理,如:账本如何验证,如何确定账户所有权问题,如何保护用户隐私,什么是工作量证明(POW),如何形成权威账本等,通过这部分内容的学习,大家基本上可以告别纯小白阶段了,无论是和别人聊区块链技术,或者是要继续深入

01-区块链入门之 区块链介绍一-大叔思维

1.区块链技术是什么? 总的来说,区块链是一套协议,一组规范,而不是具体代码.项目. 理解了这套协议,你可以基于现有的技术,以不同的语言去实现它.我们也无法用一句简单的话去概况什么是区块链,站的角度不同,得到的结论也不一样. 金融业: 区块链是一个分布式的账本,是一个分布式的银行记账系统. 密码学者:区块链是使用密码学构建的去信任网络. 码农:区块链就是一个确保最终一致性的分布式数据库. 维基百科:区块链(Blockchain)是一种分布式数据库,起源自比特币.区块链是一串使用密码学方法相关联产

2017共识大会快讯:普华永道联合阿里巴巴测试食品供应区块链

普华永道(PwC)澳大利亚正在与阿里巴巴(Alibaba)合作,共同测试新的供应链项目. 消息来自本次2017共识会议.这个专业的服务公司和中国的电子商务巨头此次合作的对象有:新西兰的乳制品独资企业Fonterra.维他命和保健品供应商Blackmores.澳大利亚邮政和新西兰邮政:6家公司共同合作以减少食品供应链中的欺诈现象. 普华永道曾于去年十一月发布了一个Vulcan项目.Vulcan是一个支持连接身份.资金和资产,允许用户便宜快捷地消费.共享.交易或跟踪任何实体或数字资产的平台.http

丰田研发部门建立区块链联盟,致力于自动驾驶技术

丰田研究所(TRI)提出了一个大胆的莱特币区块链战略. 昨日在2017共识大会上,丰田研究所公布了一系列合作伙伴关系,并发表了一份愿景,广泛概述了区块链技术可以如何推动这家汽车行业巨头的未来发展.而丰田研究所已经与麻省理工媒体实验室共同合作研究了区块链可以给汽车数据交换带来怎样的影响,甚至是如何为下一代自动驾驶车辆提供支持. 丰田研究所的合作伙伴包括巨链数据库(BigchainDB).Oaken Innovations.Commuterz以及Gem,每一个都正在与丰田汽车北美子公司合作研究探索这