火星链 火星链
Ctrl+D收藏火星链
首页 > USDC > 正文

YTH:国外大牛教你如何用Python开发一个简单的区块链数据结构

作者:

时间:1900/1/1 0:00:00

根据IEEE此前的一项调查,

Python已成为最受开发者欢迎的语言之一。由于其对于技术小白天然友好的特性,以及不断更新的新功能。Python越来越受到国内外开发者的喜爱。越来越多被用于独立、大型项目的开发开始使用Python。

20世纪90年代初荷兰人GuidovanRossum为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。

之所以选中Python作为该编程语言的名字,是取自英国20世纪70年代首播的电视喜剧《蒙提.派森的飞行马戏团》。

对于区块链开发者来说,Python也是十分实用的语言之一。今天,我们就Python开发一个简单的区块链数据结构。

在这篇文章中,一方面我们会对区块链数据结构的基本概念进行讲解,例如哈希的工作原理,另一方面,也会以实际代码来构建一个区块链基本的数据结构,让你对区块链和Python的基础有个基本的理解。

说不多说,下面就进入正题!

从哈希函数说起

在区块链中,数据结构是十分重要的基本组成部分,尤其是比特币。虽然单一的数据结构无法构建成加密数字货币,但理解数据结构对于理解区块链的基本原理是非常有益处的。

BMEX合约研究院:国外疫情愈发严重,牛市在短时间内不会结束:BMEX合约研究院研究员Kevin表示,当前全球新冠肺炎确诊新增病例数量已连续8周上升,上周新增约526万例,为疫情发生以来最高。而全球资产牛市的最大推动因素是因为货币的超发,而货币超发的原因又是因为疫情在全球的扩散。现如今全球疫情形势依然非常严峻,为了刺激经济保持复苏状态,继续宽松的货币还是大趋势,由此可以推断具有抗通胀属性的各类资产价格牛市很难在短时间结束。[2021/4/22 20:47:17]

但在讲数字结构之前,我们还是先从哈希讲起,以比特币的SHA-256哈希函数为例,讲讲如何利用Python去实现哈希的运算。

哈希函数,又称散列算法,是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。该函数将数据打乱混合,重新创建一个叫做散列值的指纹。散列值通常用一个短的随机字母和数字组成的字符串来代表。

对于任意长度的消息,SHA256都会产生一个256bit长的哈希值,称作消息摘要。

这个摘要相当于是个长度为32个字节的数组,通常用一个长度为64的十六进制字符串来表示。

来看一个例子:

百度区块链总经理:中国区块链应用领域比国外范围广:在2020年中国国际服务贸易交易会上,百度区块链总经理肖伟指出,不同于互联网的发展,中国介入区块链技术的时间不比国外晚,而国外区块链技术主要在金融领域展开,他们的行业宽度没有中国强。中国区块链应用不仅在金融领域取得了成就,在政务治理、版权保护、农业溯源、医保核实等方面也都成熟落地。(中国新闻网)[2020/9/9]

这句话,经过哈希函数SHA256后得到的哈希值为:

说回SHA-256,说白了,它就是一个哈希函数。那么我们如何用Python来实现呢?下面代码展示了用Python实现「helloworld」的过程:

看到这里你可能会问,SHA-256中的「256」究竟是什么意思?哈希算法是一个将任意文本转换为一个256位随机二进制字符串的过程。在上面的例子中,「helloworld」是一个11位的字符,经过哈希运算以后,变成了这样的一串字符:

b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9

中国互金协会区块链报告:警惕对国外开源程序的技术依赖:4月14日,中国互联网金融协会区块链研究工作组对外发布《中国区块链金融应用与发展研究报告(2020)》(下文简称《报告》)。《报告》认为,全球区块链技术正在加速演进成熟,金融领域的应用探索日渐增多,主要国家金融管理部门对区块链技术在金融领域应用持相对积极的态度。

《报告》指出,在我国,区块链技术适用的金融场景环节与应用逻辑已较为明晰,但在金融领域的应用仍存风险,比如技术层面尚难以兼顾部分金融场景对安全、功能和性能的要求;治理层面需进一步完善监管、标准、人才等有关安排;业务层面尚存模糊地带且应用创新缺少权威第三方评估等。《报告》认为,区块链技术比较适用于存在多方交易且信任基础较弱的特定金融场景,其分布式架构、块链式结构、共识机制、时间戳等技术安排有助于提升链上信息的篡改难度和可追溯性、缓解信息不对称现象,与加密技术的结合有助于提升隐私保护力度、降低数据泄露风险,而P2P网络的运用有助于在分布式环境下实现高效协同,智能合约的引入则有助于实现复杂业务流程的自动执行,可用于融资、保险科技、跨境支付、资产证券化、金融监管等场景,增加信息可信度、缓解重复交易,提高相关参与方信息交流积极性和业务处理效率,且能在一定程度上降低道德风险和操作风险。[2020/4/14]

同样,即使我的文本长度不是11位,生成的字符数也是一样的。例如:

动态 | 英国外汇公司Rational FX与Ripple达成合作:据ethereumworldnews报道,英国外汇公司Rational FX 4月4日宣布已与Ripple达成合作,将使用xCurrent产品来执行其服务,为客户提供更快、更容易和更便宜的汇款流程。[2019/4/6]

在上面例子中,「Iamthebestpresident.Ever.」,哈希运算之后的字符串一样为64位。就算输入的文本是100位,哈希运算后的字符位数也是64位。

之所以这样,是因为字符是16进制的,如果我们把这样的字符串转换为2进制,那么就会得到一个256位的2进制字符串。如下图所示:

这就是SHA-256中,256这个数字的由来。

接下来我们就来看看哈希算法有哪些特征。哈希的特征之一就是「无冲突原则」。这个原则是指要得到一个256位的2进制字符串,显然有不止一个输入可以做到。

因为256位的输出长度是固定的,但输入的长度却没有限制,所以输入的范围要远大于输出,只要能够穷尽输入,就有可能得到2个一样的256位的输出。

国外媒体:下一代家将成为数字货币最大的支持者:国外有媒体发文认为,下一代家将成为数字货币最大的支持者。并列举了支持数字货币的年轻家,如美国36岁的共和党参议院候选人Austin Petersen、曾竞选美国新罕布什尔州州长的32岁的Andrew Hemingway 、29岁正在竞选国会议员的民主党人Patrick Nelson,28岁的意大利的Gian Luca Comandini。文章称亲数字货币的年轻家正在出现,但形成气候还需要4到6年,但全世界的议会早晚会充斥着支持比特币的家。[2018/3/4]

话虽如此,不过要找到这样两个输入的难度却很大。即使是输入上改动了一点,输出的结果都会完全不同。如下图所示:

所以,想要找到2中一样的输出的唯一方法,是穷尽所有的字幕、数字组合,这几乎无法做到。几率为2的256次方。

这是个多大的数字?展开来就是酱婶儿的:

115792089237316195423570985008687907853269984665640564039457584007913129639936

几乎相当于10的77次方。这是个什么概念?在460亿光年的宇宙内,可见的原子数量也只有10的78次方。这个数字几乎相当于宇宙内的原子数量!

要运算这个数字需要多长时间?以英伟达Geforce1080Ti显卡,浮点运算11.3的算力来运算,每个哈希需要运算3000次,以每秒钟3766666666个哈希的速度来运算,找到两个相同的哈希运算结果,需要计算2的128次方个哈希。地球上所有的人一起计算,需要的时间如下:

这比地球存在的实时间都要长。

用Python创建第一个区块

了解了什么是哈希,我们接着就来说说什么是区块。实际上,区块链就是一个互相连接的序列。我们接下来创建第一个区块,也称为「创世区块」。代码如下所示:

区块链中会包含交易,交易很好理解,就是谁转了多少钱给谁。我们把区块进行序列,这样它就可以进行哈希运算:

这样,我们就得到了另一个区块,我们姑且称它为「区块2」:

再对区块2进行哈希运算:

得到了「区块3」。

再对区块3进行哈希运算,得到了「区块4」。

这样一来,想要确定区块上的数据没有被篡改,我只需要检查最后一个区块的哈希就行了。而不是从创世区块开始检查。这一原理也杜绝了区块链上数据被攒该的可能。

通过以上代码,可以得到下面结果:

这样,用Python实现简单的区块链开发的演示就结束了。Python是一门强大的语言,区块链是一个强大的信用工具,这两者结合,势必能创造出新的可能性。

怎么样,今天的内容你都学会了吗?还想看哪些技术教程,欢迎留言告诉营长!

参考链接:?

https://medium.com/coinmonks/building-a-simple-blockchain->

https://blog.csdn.net/u011583927/article/details/80905740

来源?

|Medium

作者|arjunaskykok

整理/?Aholiab

出品|?区块链大本营

标签:区块链YTHHONSHA区块链技术的特点ZYTH价格honey币价SHARO价格

USDC热门资讯
比特币:比特币手续费与2017年12月相比已下降88%,是扩容成果显著还是交易少了?

2017年12月,比特币费用几乎总是在10美元以上,有时甚至接近30美元。今天我们的比特币价格几乎是一样的,但手续费却下降了很多,大多数情况下不到一美元.

1900/1/1 0:00:00
以太坊:ConsenSys最新报告:2019 稳定币现状

这是一份来自著名的以太坊孵化机构?ConsenSys刚刚于8月中旬更新并发布的「2019稳定币发展现状」报告.

1900/1/1 0:00:00
BDC:9月5日行情分析:消息面的黑天鹅在减少,为什么市场还是不为所动

昨日晚间,国常会要求引导利率下行,降准降息已经在路上,这也预示着全球两大最主要的经济体都出现货币宽松,再加上欧洲已经基本宣布要启动QE,全球最主要的几大经济体集体放水,资产价格自然会水涨船高.

1900/1/1 0:00:00
SEC:行业观察 | 区块链的未来在哪里,美国证监会STO开闸的机遇与挑战

欢迎关注:DigitInsight,我们将持续输出优质行业研究报告。7月11日,美国证券交易委员会已批准区块链公司Blockstack根据RegA+规则出售价值2800万美元的代币.

1900/1/1 0:00:00
数字货币:穆长春公开课:挡不住的Libra阳谋与呼之欲出的DCEP

从央行层面关于央行数字货币的公开发声可以看到,从今年七八月份以来,发声尤其密集,预示着央行离发行中国的数字货币真的不远了,届时,中国将成为第一个真正意义上发行加密货币的主权国家.

1900/1/1 0:00:00
数字人:巴比特专栏 | 人民币国际化、央行数字货币与出海创业投资消费的逻辑关联

猫叔最近这个月码的字,估计超过了之前数年的总和。其中一个主要原因,是猫叔最重要的那个读者,点头鼓励猫叔可以瞎写了。猫叔的性子比较散淡,只有写自己喜欢的题目才有灵感,否则秒变重度拖延症.

1900/1/1 0:00:00