宇宙链 宇宙链
Ctrl+D收藏宇宙链
首页 > FIL > 正文

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

作者:

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

根据IEEE此前的一项调查,

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

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

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

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

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

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

从哈希函数说起

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

法国外贸银行:有必要考虑提高各国央行的通胀目标:8月9日消息,法国外贸银行分析师认为,由于人口老龄化、生产成本上升、可再生能源成本上升、大宗商品需求旺盛等因素,经合组织成员国未来的结构性通胀将走高。如果通胀结构性走高,就有必要考虑提高经合组织各个成员国央行的通胀目标。因为如果各央行要保持2%的通胀目标,就要不断地将实际利率保持在异常高的水平,从而不断地而又不必要地削弱经济。改变通胀目标不是为了与短期通胀高企的冲击抗衡,而是为了向可能的永久性高通胀过渡。(金十)[2022/8/9 12:12:06]

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

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

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

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

来看一个例子:

澳大利亚四大交易所:并未受国外其他交易所影响:9月16日消息,澳大利亚交易所Swyftx、CoinSpot、CoinJar和BTC Markets均表示,虽然近年来,Kraken、Gemini、Binance都在澳大利亚开设分部,但这并未带来什么严重影响。CoinJar首席营销官Dominic Gluchowski表示:“我们普遍发现,澳大利亚客户更喜欢在当地支持下使用澳大利亚本土的交易所。”(Coindesk)[2021/9/16 23:28:47]

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

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

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

b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9

中科院战略研究院研究员:建议我国主动探索将比特币等私有货币纳入我国外汇资产储备:昨日,中国科学院战略研究院研究员在微信公众号“腾讯研究院”上发表文章,详细探讨了私有数字货币、稳定币和法定数字的潜在风险,并给出应对的建议。在谈及应对私有数字货币潜在的风险时,文章建议密切跟踪最新进展情况,做好风险研判预判,提前储备风险应对技术和方案,并主动探索将比特币等私有数字货币纳入我国外汇资产储备。同时,加强对稳定币新理念、新架构的创新探索和风险评估,主动对接监管,做好合规发展。[2021/5/14 22:01:10]

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

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

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

声音 | 中国外汇局副局长:将拓展区块链在跨境融资等应用场景:外汇局副局长陆磊今天在北京出席由中新社举办的“国是论坛2019年会”时透露,外汇局搭建的跨境金融区块链平台,是目前唯一一个中央国家机关在国家互联网信息办公室进行备案的区块链平台。下一步,我们将逐步扩大试点范围,拓展区块链技术在跨境融资、宏观审慎管理的应用场景。(国是直通车)[2019/12/24]

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

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

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

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

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

动态 | 英国外汇交易所旗下加密交易所获得直布罗陀DLT许可证:据Finance Magnates消息,英国外汇交易所LMAX Exchange子公司LMAX Digital宣布,其已获得直布罗陀金融服务委员会(GFSC)颁发的分布式分类账技术(DLT)提供商许可证。据悉,LMAX Digital于2018年年中推出,是首个由受监管的外汇交易所运营商建立的加密货币交易所。[2019/4/17]

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

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币hong kong flokishadowfi币处理结果

FIL热门资讯
挖矿着了魔!乌克兰核电站经营者竟暗地挖矿,结果被捕

乌克兰安全部门逮捕了在尤兹努克兰斯克核电站设施开采加密货币的发电厂经营者。 金色财经挖矿数据播报 | ETH今日全网算力下降1.12%:金色财经报道,据蜘蛛矿池数据显示: BTC全网算力169.269EH/s,挖矿难度23.14T,目.

1900/1/1 0:00:00
不局限于发币,Twitter CEO创办的Square想借助加密货币C位出道

Twitter创始人、Square联合创始人杰克?多尔西预测,随着加密货币的应用越来越广泛,Square将转向提供更广泛的“互联网服务”,而不仅仅是金融技术服务.

1900/1/1 0:00:00
期货持仓多头占优,牛市还未结束?

作者|哈希派分析团队 CME比特币期货持仓周报:未平仓总量升至12242张:金色财经消息,据KingData监控,CFTC 6月8日至6月14日,CME比特币期货持仓周报显示: 未平仓总量自10,990张上升至12,242张.

1900/1/1 0:00:00
交易所暂停提现、数据错乱,或是东京亚马逊服务器故障所导致

据雅虎日本报道,2019年8月23日13时左右开始AmazonWeb服务出现故障,发生故障的服务是EC2,东京地区的亚太服务器(ap-northeast-1)的通信部分出现了故障,此后,被附接至一些实例的EBS性能出现恶化.

1900/1/1 0:00:00
谷燕西:Bakkt实物交割期货将对BTC价格的真实性和稳定性产生非常大的影响

Bakkt官网正式确认,比特币期货交易将于9月23日正式发布。Bakkt从创立至今,吸引了无数关注,这个项目由ICE发起,并吸引了12家顶级投资机构的参与,首轮融资后估值达7亿美元.

1900/1/1 0:00:00
R3与迪拜金融科技公司达成战略合作,打造伊斯兰资本市场下一代金融架构

据外媒近日消息,R3与总部位于迪拜的金融科技初创公司Wethaq达成战略合作伙伴关系,为伊斯兰资本市场打造下一代金融架构.

1900/1/1 0:00:00