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

翻译 2017年11月06日 09:38:17

原文:A Python Implementation of a simple blockchain
翻译:无阻我飞扬

摘要:本文来自github,描述了如何用少量的Python代码实现一个简单的blockchain,以下是译文。

描述

pysimplechain的实现完全聚焦于哈希账本功能。它不包含任何高级功能,诸如分布式账本或者通过工作量证明的一致性协议。在这个项目中,还会发现“事务”的概念被抽象为一个更通用的“消息”概念,它可以包含任何类型的数据。

因此,这个项目的目标是解释和澄清什么是blockchain最核心的结构。项目的意图不是为了重写一个高级的blockchain,如比特币或以太坊。

这个blockchain通过包含三个类的simple_chain.py文件实现。Message()类,Block()类和Chain()类。

message是基本的数据容器。当增加一个块时,它被密封,块中具有标识它的2个哈希值:有效载荷哈希和块哈希。每个消息通过哈希指针(prev_hash属性)链接到前一个消息。validate消息的方法将确保每个消息的完整性,但不会检查哈希指针正确与否。这个工作留给在Block()类中的validate方法去完成。

block包含一个接一个地依次链接的1,…,n个消息。当一个block添加到chain时,它被密封和验证,以确保消息正确排序,并且哈希指针匹配。一旦块被密封和哈希,它将通过检查期望值与实际值进行验证。

chain包含一个接一个依次链接的1,…,m个块。可以随时调用validate方法来验证链的完整性,它将调用每个块的验证方法,一旦验证不通过,将抛出InvalidBlockchain异常。

交互性:

manager()函数,通过终端/控制台与blockchain交互。基本动作是:

  • 添加消息到块:允许向当前块添加消息;
  • 添加块到链:允许将当前块添加到链,如果它不为空;
  • 显示块:请求一个索引,如果存在具有该索引的块,则返回一些块属性;
  • 显示链:返回链中每个块的一些属性;
  • 验证完整性:如果验证是完整的,则返回True,否则终止程序,抛出适当的异常;
  • 退出:终止程序并删除区块链。

贡献

欢迎大家有新的想法:打开/关闭issues,fork repo,通过Pull请求分享你的代码。
将此项目克隆到您的计算机:
git clone https://github.com/EricAlcaide/pysimplechain

一文看懂区块链架构设计

转自:http://www.8btc.com/ebook-blockchain 前言 区块链作为一种架构设计的实现,与基础语言或平台等差别较大。区块链是加密货币背后的技术,是当下与VR虚拟现实...
  • lucky_greenegg
  • lucky_greenegg
  • 2016年10月15日 11:23
  • 32648

用Python从零开始创建区块链

本文主要内容翻译自Learn Blockchains by Building One 本文原始链接,转载请注明出处。 作者认为最快的学习区块链的方式是自己创建一个,本文就跟随作者用Pytho...
  • zouhui1003it
  • zouhui1003it
  • 2018年01月08日 08:33
  • 604

用Python从零开始创建区块链

作者认为最快的学习区块链的方式是自己创建一个,本文就跟随作者用Python来创建一个区块链。对数字货币的崛起感到新奇的我们,并且想知道其背后的技术——区块链是怎样实现的。但是完全搞懂区块链并非易事,我...
  • BF02jgtRS00XKtCx
  • BF02jgtRS00XKtCx
  • 2018年01月14日 00:00
  • 352

(转)Python之区块链入门

http://101python.cn/blockchain值得了解一下。
  • wowotuo
  • wowotuo
  • 2018年01月03日 09:54
  • 456

区块链应用开发入门

很多人想运用区块链,都找不到突破口,应该学习哪些知识和技术呢,应该用什么样的区块链呢?这篇文章为你解读。...
  • elwingao
  • elwingao
  • 2016年09月02日 11:18
  • 26572

关于区块链的一些思考

与区块链在传统行业火热的程度相比,互联网公司异常冷静,区块链到底能解决什么问题?我们该如何参与?我们一起探讨...
  • wangbaoxing
  • wangbaoxing
  • 2016年01月20日 08:47
  • 2219

用不到50行的Python代码构建最小的区块链

尽管一些人认为区块链是一个等待问题的解决方案,但毫无疑问,这种新技术是计算机的奇迹。但是,区块链到底是什么呢? 区块链 它是比特币或其他加密货币进行交易的数字账本,账本按时间顺序记录并对外公开。 ...
  • lltaoyy
  • lltaoyy
  • 2017年08月03日 16:37
  • 383

关于区块链的解读和简单Python实现

概念解读 区块链几乎是数日间成为人尽皆知的名词,这个名词也勾起了我强烈的兴趣,但是通过在网上搜罗资料,多方阅读,发现很多介绍区块链的文献要么模棱两可,要么作者本身的理解也很有限,导致很多关键的问...
  • BmwGaara
  • BmwGaara
  • 2018年01月18日 17:53
  • 574

谈谈目前我对区块链(Blockchain)的认识

从 IBM Bluemix 云平台的过程中,发现了 Blockchain 这个服务,我才知道有这样一种强大火热的技术存在;只前只是知道有比特币,还申请过一个账户也想去挖矿,但后来也是不了了之了,并没有...
  • testcs_dn
  • testcs_dn
  • 2016年11月27日 21:16
  • 8360

在网上看到使用PHP实现常见的数据结构和算法

 偶然使用google的代码搜索里面发现一个使用php实现的基本的数据结构和算法,什么二叉树、二叉搜索树、AVL树、B树、链表和常见排序、搜索算法等等,而且全部是使用面向对象来实现的,确是是很强。源码...
  • heiyeshuwu
  • heiyeshuwu
  • 2007年02月27日 19:03
  • 7698
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用不到200行的Python代码实现一个区块链
举报原因:
原因补充:

(最多只允许输入30个字)