根据IEEE此前的一项调查,
Python已成为最受开发者欢迎的语言之一。由于其对于技术小白天然友好的特性,以及不断更新的新功能。Python越来越受到国内外开发者的喜爱。越来越多被用于独立、大型项目的开发开始使用Python。
20世纪90年代初荷兰人GuidovanRossum为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。
之所以选中Python作为该编程语言的名字,是取自英国20世纪70年代首播的电视喜剧《蒙提.派森的飞行马戏团》。
对于区块链开发者来说,Python也是十分实用的语言之一。今天,我们就Python开发一个简单的区块链数据结构。
在这篇文章中,一方面我们会对区块链数据结构的基本概念进行讲解,例如哈希的工作原理,另一方面,也会以实际代码来构建一个区块链基本的数据结构,让你对区块链和Python的基础有个基本的理解。
说不多说,下面就进入正题!
从哈希函数说起
在区块链中,数据结构是十分重要的基本组成部分,尤其是比特币。虽然单一的数据结构无法构建成加密数字货币,但理解数据结构对于理解区块链的基本原理是非常有益处的。
IPFS100.com CEO佟扬:Filecoin应用可能会在国外首先落地:IPFS100.com现场报道,8月3日,由IPFS100.com主办,CapitalN节点咨询承办,金色算力云联合主办,深圳市先河系统技术有限公司金牌赞助,逆熵科技银牌赞助,金色财经作为联合主办媒体的星际漫游指南·逐鹿中原·IPFS技术与应用研讨论坛在郑州举行。
在以《IPFS国内市场VS国外市场》为主题的高峰对话中,金色财经合伙人、IPFS100.com CEO佟扬表示,Filecoin应用到的技术比较复杂,其愿景也非常大,但短期内Filecoin可能很难大规模的应用落地。我们看到区块链发展到现在,也没有像支付宝一样的企业级应用落地。不过如果仅仅是应用在数据存储领域,Filecoin可能会在海外有更好的应用场景,因为在隐私类数据上,国内的存储和传输都会受到很多限制。国内更适合建设一些与分布式存储技术相关的基础设施,比如IDC机房。[2020/8/4]
但在讲数字结构之前,我们还是先从哈希讲起,以比特币的SHA-256哈希函数为例,讲讲如何利用Python去实现哈希的运算。
哈希函数,又称散列算法,是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。该函数将数据打乱混合,重新创建一个叫做散列值的指纹。散列值通常用一个短的随机字母和数字组成的字符串来代表。
对于任意长度的消息,SHA256都会产生一个256bit长的哈希值,称作消息摘要。
动态 | 国内区块链监管自“去伪”转向“存真” 国外则多国开始推动国家数字货币发展:据互链脉搏消息,公开资料统计数据显示,上半年全球共181条区块链扶持相关的政策信息,和187条监管方面的政策信息。这些政策信息分别来自于65个国家和4个国际组织,可见当前各国均较为关注区块链领域的发展。随着2月15日,《区块链信息服务管理规定》正式施行,中国的区块链监管相较于此前九四的“去伪”,愈加倾向于“存真”。国内各地推动区块链真项目发展的扶持政策也逐步跟上。而国外方面,美国将数字货币纳入已有的证券监管体系;韩国在监管的同时更加重视对区块链领域的资金扶持;泰国、乌克兰、马绍尔等国开始推动国家数字货币的发展。[2019/7/9]
这个摘要相当于是个长度为32个字节的数组,通常用一个长度为64的十六进制字符串来表示。
来看一个例子:
这句话,经过哈希函数SHA256后得到的哈希值为:
动态 | 国外一男子冒充警察 要求受害者使用加密货币汇款:据thenextweb消息,最近,美国加利福尼亚州一名妇女接到一个自称是伯克利警察局(BPD)“警官Neil Matthew”的人的电话。对方要求该女子使用加密货币将所有钱汇给他,声称她正在接受“贩和欺诈活动”的调查。随后该女子接到了多个来自不同号码的电话 ,包括911。 BPD表示,警局并没有该名称的警官,犯可以用官方电话掩盖他们自己的电话号码,目前尚不清楚者的目标是否针对加利福尼亚州以外的人。[2019/4/25]
说回SHA-256,说白了,它就是一个哈希函数。那么我们如何用Python来实现呢?下面代码展示了用Python实现「helloworld」的过程:
看到这里你可能会问,SHA-256中的「256」究竟是什么意思?哈希算法是一个将任意文本转换为一个256位随机二进制字符串的过程。在上面的例子中,「helloworld」是一个11位的字符,经过哈希运算以后,变成了这样的一串字符:
b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
同样,即使我的文本长度不是11位,生成的字符数也是一样的。例如:
未能阻止Alibabacoin名称被国外公司使用 阿里称要采取进一步行动:据Caixinglobal消息,在美国法官拒绝禁止Alibabacoin(ABBC)基金会继续使用他们的名称后,阿里称要采取进一步行动。阿里巴巴发言人告诉财新记者,他们将提交一份新的动议,之前的法律裁决仅仅是因为管辖权问题(而败诉)。他们相信能够结束ABBC蓄意的非法活动,并强调ABBC并不属于阿里巴巴。ABBC并没有对此做出回复,但在4月份这家迪拜公司否认侵害阿里巴巴的权益,称Alibaba这个词不属于某个实体,在迪拜有很多公司使用这个名字。[2018/5/2]
在上面例子中,「Iamthebestpresident.Ever.」,哈希运算之后的字符串一样为64位。就算输入的文本是100位,哈希运算后的字符位数也是64位。
之所以这样,是因为字符是16进制的,如果我们把这样的字符串转换为2进制,那么就会得到一个256位的2进制字符串。如下图所示:
这就是SHA-256中,256这个数字的由来。
接下来我们就来看看哈希算法有哪些特征。哈希的特征之一就是「无冲突原则」。这个原则是指要得到一个256位的2进制字符串,显然有不止一个输入可以做到。
因错过比特币疯涨 国外一网友讲述弟弟因此自杀: “他曾称自己拥有15000个比特币,可能其中有夸张的成分,但在2012年他的确有约6000个比特币。直到2013年他丢失了大部分比特币,或者说在某个时间卖掉了它们”。看着2013年至今比特币价格疯涨100倍,“弟弟开始懊恼,跟他联系变得困难,直到几周前,父母发现他自杀,没留下任何遗言”。[2017/12/7]
因为256位的输出长度是固定的,但输入的长度却没有限制,所以输入的范围要远大于输出,只要能够穷尽输入,就有可能得到2个一样的256位的输出。
话虽如此,不过要找到这样两个输入的难度却很大。即使是输入上改动了一点,输出的结果都会完全不同。如下图所示:
所以,想要找到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
出品|?区块链大本营
“HODL”是虚拟资产领域中一个相当常用的术语,经常被使用,指的是投资者或交易员之间进行金融讨论时使用的“比特币”.
1900/1/1 0:00:00巴比特消息,9月6日,2019中国区块链技术创新峰会在上海市杨浦区举行。本次大会由上海市科学技术委员会、上海市经济和信息化委员会、杨浦区人民政府、上海市科学技术协会、上海科学院联合主办,上海区块.
1900/1/1 0:00:00你有多少双鞋子?最近,多少双鞋子似乎正与你有多少个比特币、多少银行存款,一起成为财富的某种象征。 在比特币崛起后,球鞋市场近两年因其强大的市场需求,开始被赋予金融力量.
1900/1/1 0:00:00作者|哈希派分析团队美股期货期货持续上扬 标普500指数期货涨0.85%:行情显示,美股期货期货持续上扬,纳指期货涨幅扩大至1%,标普500指数期货涨0.85%,道指期货涨0.75%.
1900/1/1 0:00:00作者|哈希派分析团队金色财经合约行情分析 | BTC窄幅盘整,市场其他币种各有表现:据火币BTC永续合约行情显示,截至今日16:00(GMT+8),BTC价格暂报9280美元(+0.59%).
1900/1/1 0:00:009月1日消息,据《南华早报》报道称,上周日,菲律宾著名拳王曼尼·帕奎奥在马尼拉举行的一场免费音乐会上宣布推出了自己的加密货币Pactoken,其在音乐会上为其2000多名粉丝唱了小夜曲.
1900/1/1 0:00:00