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

原文: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

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值