专栏首页云时之间如何创建一个最小的区块链

如何创建一个最小的区块链

这是我在一个外文网站上看到的一篇博文,作者通过50行代码写出了区块链的简化版本.麻雀虽小,但是五脏俱全.我觉得通过实践,这是了解区块链的一个好的方式.于是我将代码实现了下.并且通过这篇文章,说说我读这个代码的时候的思路.

在这串代码里我们主要使用了两个库.这两个库都是python里边自带的,一个是hashlib,这个库里边提供了主要的摘要算法.比如MD5和SHA等.另外一个库是datatime模块.这个模块是python里提供时间日期的模块.在区块链里边,每个区块都需要储存一个时间戳(也就是当前的时间)和一个索引.因此这个库为我们提供了使用的工具.

1:初始化函数

首先我们定义区块链的初始参数,我们这里因为是最基本的区块链,这里只包含我们需要的几个参数,但是这些参数是大部分区块链所需要的.比如每个链的索引位置,时间数据以及哈希值.

2:加密函数

区块链说到底就是产生一堆数值让大家去计算,看谁算的快,而计算的时候我们需要的一个算法就是在这个加密函数里产生.

这里我们使用的是hashlib里边的sha256加密,然后将其进行更新,为了确保整个区块链的完整性,每个区块都会有一个自我识别的散列。和比特币一样,每个块的散列将是块的索引,时间戳,数据和前一个块散列的散列的加密散列.然后我们去使用hexdigest返回一个16进制的加密结果.

3:初始化函数

这个创建一个起源块,起始的链的数目是0,这个应该要注意一下.其他就是你想给定的参数,具体传递的参数参照函数1.

4:后续函数

这个函数是为以后的区块链产生做准备,这里边的规则是可以我们认为给定的,所以我们现在看很多的山寨币或者空气币光凭发行方的一口说法是不可信的,因为他们既做裁判有做庄家,一旦改变了规则,散户被套牢的风险极大.

5:调用函数区块链本身就是一个简单的Python列表。列表的第一个元素是创世区块。当然,我们需要添加后续的块。由于这个例子是最小的区块链,我们只会添加100个新区块。我们可以用for循环来做到这一点。

接下来无非就是调用上边的参数,然后输入你想要产生的块链就可以.

6:运行结果

这就是这个小程序所提供的一切。如果想要让这个规模达到当今生产区块链的规模,我们必须添加更多功能,如服务器层来追踪多台机器上链块的变化,以及工作量验证算法,以限制添加到给定的时间段。

如果你想了解更多地关于区块链的技术,可以查看原始比特币白皮书。祝你好运!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • CV学习笔记(十一):模板匹配

    这里说的模板是我们已知的小图像,模板匹配就是在一副大图像中搜寻目标。模板就是我们已知的在图中要找的目标,且该目标同模板有相同的尺寸、方向和图像,通过一定的算法可...

    云时之间
  • CV学习笔记(十一):模板匹配

    这里说的模板是我们已知的小图像,模板匹配就是在一副大图像中搜寻目标。模板就是我们已知的在图中要找的目标,且该目标同模板有相同的尺寸、方向和图像,通过一定的算法可...

    云时之间
  • 深度学习与神经网络:单层感知机

    今天这个文章让我们一起来学习下感知机: ? 一个传统的单层感知机如上图所示,其实理解起来很简单,我们可以直接理解为输入节点接受信号之后直接传输到输出节点,然后得...

    云时之间
  • 高挺:区块链在金融领域的三个应用方向

    文/高挺(德勤中国智慧未来学院总监) 从技术的角度来看,区块链是一种底层的基础架构,它的应用范围不仅局限于金融行业,就像大数据可以在金融行业,也可以在其它行业中...

    企鹅号小编
  • 可以作为女性顾问的世界顶级区块链公司

    区块链景观正在引起越来越多的关注。随着更多首次公司和应用竞争ICO,对基于区块链技术的长期可行性的关注也在增长。 许多区块链开发人员和创业者必须回答的问题之一是...

    首席架构师智库
  • 黑暗中的利刃, 解析区块链+DevOps实践 | 案例

    去年加密货币的暴跌戳破了无数投资者一夜暴富的美梦,也让不少用户渐渐对加密货币失去了信心。

    区块链大本营
  • 世界经济论坛:企业决定应用区块链之前先回答这11个问题

    点滴科技资讯
  • 区块链·理解分布式记账

    中国广东省深圳市龙华新区民治街道溪山美地 518131 +86 13113668890 <netkiller@msn.com>

    netkiller old
  • 9 大实际用例,让你重新认识区块链

    你一定听过区块链,你上网看了几篇文章,看了些视频弄清楚其运行原理。现在你似乎理解了,但你还是很困惑。

    CDA数据分析师
  • 宜信Blockworm BaaS:用区块链技术构建可信商业环境

    2008年,中本聪发表了一篇题为《比特币:点对点的电子现金系统》的论文,首次提出了关于区块链概念的描述。

    宜信技术学院

扫码关注云+社区

领取腾讯云代金券