- 国外大牛教你,如何用Python开发一个简单的区块链数据结构| 建议收藏
- 来源:区块链大本营
根据IEEE此前的一项调查,Python已成为最受开发者欢迎的语言之一。由于其对于技术小白天然友好的特性,以及不断更新的新功能。Python越来越受到国内外开发者的喜爱。越来越多被用于独立、大型项目的开发开始使用Python。
20世纪90年代初荷兰人Guido van Rossum为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,作为ABC 语言的一种继承。
之所以选中Python(大蟒蛇的意思)作为该编程语言的名字,是取自英国20世纪70年代首播的电视喜剧《蒙提.派森的飞行马戏团》(Monty Python's Flying Circus)。
对于区块链开发者来说,Python也是十分实用的语言之一。今天,我们就Python开发一个简单的区块链数据结构。
在这篇文章中,一方面我们会对区块链数据结构的基本概念进行讲解,例如哈希的工作原理,另一方面,也会以实际代码来构建一个区块链基本的数据结构,让你对区块链和Python的基础有个基本的理解。
说不多说,下面就进入正题!
从哈希函数说起
在区块链中,数据结构是十分重要的基本组成部分,尤其是比特币。虽然单一的数据结构无法构建成加密数字货币,但理解数据结构对于理解区块链的基本原理是非常有益处的。
但在讲数字结构之前,我们还是先从哈希讲起,以比特币的SHA-256哈希函数为例,讲讲如何利用Python去实现哈希的运算。
哈希函数,又称散列算法,是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。该函数将数据打乱混合,重新创建一个叫做散列值(或哈希值)的指纹。散列值通常用一个短的随机字母和数字组成的字符串来代表。
对于任意长度的消息,SHA256都会产生一个256bit长的哈希值,称作消息摘要。
这个摘要相当于是个长度为32个字节的数组,通常用一个长度为64的十六进制字符串来表示。
来看一个例子:
这句话,经过哈希函数SHA256后得到的哈希值为:
说回SHA-256,说白了,它就是一个哈希函数。那么我们如何用Python来实现呢?下面代码展示了用Python实现「hello world」的过程:
看到这里你可能会问,SHA-256中的「256」究竟是什么意思?哈希算法是一个将任意文本转换为一个256位随机二进制字符串的过程。在上面的例子中,「hello world」是一个11位的字符(只算字母),经过哈希运算以后,变成了这样的一串字符:
b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
同样,即使我的文本长度不是11位,生成的字符数也是一样的。例如:
在上面例子中,「I am the best president. Ever.」(意为:我是史上最好的总统),哈希运算之后的字符串一样为64位。就算输入的文本是100位,哈希运算后的字符位数也是64位。
之所以这样,是因为字符是16进制的,如果我们把这样的字符串转换为2进制,那么就会得到一个256位的2进制字符串。如下图所示:
这就是SHA-256中,256这个数字的由来。
接下来我们就来看看哈希算法有哪些特征。哈希的特征之一就是「无冲突原则」。这个原则是指要得到一个256位的2进制字符串,显然有不止一个输入可以做到。
因为256位的输出长度是固定的,但输入的长度却没有限制,所以输入的范围要远大于输出,只要能够穷尽输入,就有可能得到2个一样的256位的输出。
话虽如此,不过要找到这样两个输入的难度却很大。即使是输入上改动了一点,输出的结果都会完全不同。如下图所示:
所以,想要找到2中一样的输出的唯一方法,是穷尽所有的字幕、数字组合,这几乎无法做到。几率为2的256次方。
这是个多大的数字?展开来就是酱婶儿的:
115792089237316195423570985008687907853269984665640564039457584007913129639936
几乎相当于10的77次方。这是个什么概念?在460亿光年的宇宙内,可见的原子数量也只有10的78次方。这个数字几乎相当于宇宙内的原子数量!
要运算这个数字需要多长时间?以英伟达Geforce 1080 Ti显卡,浮点运算11.3的算力来运算,每个哈希需要运算3000次,以每秒钟3766666666个哈希的速度来运算,找到两个相同的哈希运算结果,需要计算2的128次方个哈希。地球上所有的人一起计算,需要的时间如下:
这比地球存在的实时间都要长。
用Python创建第一个区块
了解了什么是哈希,我们接着就来说说什么是区块。实际上,区块链就是一个互相连接的序列。我们接下来创建第一个区块,也称为「创世区块」。代码如下所示:
区块链中会包含交易,交易很好理解,就是谁转了多少钱给谁。我们把区块进行序列,这样它就可以进行哈希运算:
这样,我们就得到了另一个区块,我们姑且称它为「区块2」:
再对区块2进行哈希运算:
得到了「区块3」。
再对区块3进行哈希运算,得到了「区块4」。
这样一来,想要确定区块上的数据没有被篡改,我只需要检查最后一个区块的哈希就行了。而不是从创世区块开始检查。这一原理也杜绝了区块链上数据被攒该的可能。
通过以上代码,可以得到下面结果:
这样,用Python实现简单的区块链开发的演示就结束了。Python是一门强大的语言,区块链是一个强大的信用工具,这两者结合,势必能创造出新的可能性。
怎么样,今天的内容你都学会了吗?还想看哪些技术教程,欢迎留言告诉营长!
参考链接:
https://medium.com/coinmonks/building-a-simple-blockchain-data-structure-with-python-e7ebd448647a
https://blog.csdn.net/u011583927/article/details/80905740
推荐阅读:
猛戳""有惊喜哟
老铁在看了吗?👇
区块
-
- 5大主流主链排行版出炉; 以太坊新生合约数持续3周下跌; 各大榜单均现“黑马”冲榜!| 数据周榜
- 责编 | Carol 出品 | CSDN、amberdata.io、区块链大本营(blockchain_camp) 经历了前连续几周行情的大幅度波动,相信很多小伙伴的内心已经毫无波澜了。毕竟人生也
- 区块链大本营
-
- 以太坊和“七个小矮人”
- 点击上方“Unitimes” 可以订阅哦! unitimes.io 全球视角,独到见解 作者 | Joel Monegro 编辑 | Summer 上世纪60年代的计算机行业人士普遍或说,市场是
- Unitimes
-
- 币圈94两周年纪念,重温老鸟面对政策的正确飞行姿势
- 9月4日,是币圈一个极其重要的日子。 两年前的9月4日,本应是秋高气爽,心情正好的时节,不料区块链行业却遭遇了一次前所未有的动荡。当天,中国中国人民银行等七部委联合发布《关于防范代币发行融资风险的公
- Yesbit区块链投资
-
- 观点 | 对比特币的最大误解就是......
- 点击上方“Unitimes” 可以订阅哦! unitimes.io 全球视角,独到见解 作者 | Luc Dossis 编辑 | Jhonny 理解比特币并非易事。自2017年我开始掉进比特币这
- Unitimes
-
- 全球区块链早讯(9.5)
- 每日行情快讯:BTC早间围绕10600美元附近宽幅震荡 BTC早间围绕10600美元附近宽幅震荡。BTC在币安现报10561.03美元,24h跌幅1.44%。 1.全球数字货币市场总价值为2681.9
- 全球区块链早讯
-
- BEPAL专访:2019比原链全球开发者大赛全程解密
- 点击蓝字关注 比原链公众号 国时间8月24日,2019比原链全球开发者大会在旧金山Fort Mason Cowell Theater圆满落幕。针对此次比原链举办的全球区块链全球开发者大会,BE
- 比原链Bytom
-
- 观点 | 对比特币的最大误解就是......
- 点击上方“Unitimes” 可以订阅哦! unitimes.io 全球视角,独到见解 作者 | Luc Dossis 编辑 | Jhonny 理解比特币并非易事。自2017年我开始掉进比特币这
- Unitimes
-
- 央行的数字货币挺厉害
- 同志们好,这里是狗哥的第377篇日记。 昨天得到APP出了一个新课, 穆长春的《科技金融前沿:Libra与数字货币展望》。 穆长春是中国人民银行支付结算司副司长,可以说是深度研究了数字货币、深度
- 狗哥币圈实盘日记
-
- 国外大牛教你,如何用Python开发一个简单的区块链数据结构| 建议收藏
- | Medium 作者 | arjuna sky kok 整理 / Aholiab 出品 | 区块链大本营(blockchain_camp) 根据IEEE此前的一项调查,Python已成为最受开发
- 区块链大本营
-
- BEPAL专访:2019比原链全球开发者大赛全程解密
- 点击蓝字关注 比原链公众号 国时间8月24日,2019比原链全球开发者大会在旧金山Fort Mason Cowell Theater圆满落幕。针对此次比原链举办的全球区块链全球开发者大会,BE
- 比原链Bytom
-
- 分布式金融的基础设施:如何驱动主流采用?
- (盛开的果树园,梵高) 金融和科技结合之后,一直向更高效更低成本以及服务更多人的方向发展。从一开始金融公司的信息化到2008年之后出现真正的金融科技企业如Lenging Club等,到后来涌现更多互联
- 蓝狐笔记
-
- 以太坊、BCH等主流项目的开发资金又快花光了,项目开发会停摆吗?
- 8 月末,以太坊基金会(Ethereum Foundation)宣布将拨款超过 246 万美元用于资助以太坊 2.0 的开发。 7 月上旬,加密货币衍生品交易平台 BitMEX 的母公司 HDR Gl
- 白话区块链
-
- 币圈94两周年纪念,重温老鸟面对政策的正确飞行姿势
- 9月4日,是币圈一个极其重要的日子。 两年前的9月4日,本应是秋高气爽,心情正好的时节,不料区块链行业却遭遇了一次前所未有的动荡。当天,中国中国人民银行等七部委联合发布《关于防范代币发行融资风险的公
- Yesbit区块链投资
-
- 国外大牛教你,如何用Python开发一个简单的区块链数据结构| 建议收藏
- | Medium 作者 | arjuna sky kok 整理 / Aholiab 出品 | 区块链大本营(blockchain_camp) 根据IEEE此前的一项调查,Python已成为最受开发
- 区块链大本营
-
- Huobi的区块链手机下周将在东南亚上市
- 中国密码交易所Huobi计划下周在东南亚推出其区块链智能手机锐角(Acute Angle)。 菜鸟区块链 文 | 菜鸟区块链 正式发射即将到来 根据金融巨头9月3日的一份报告,Huobi的新区块
- 菜鸟区块链
朋友会在“发现-看一看”看到你“在看”的内容