风险提示:理性看待区块链,提高风险意识!
国外大牛教你如何用Python开发一个简单的区块链数据结构
首页 > 币界资讯 > 区块链新闻 2019-09-06 20:16
摘要
根据IEEE此前的一项调查,Python已成为最受开发者欢迎的语言之一。由于其对于技术小白天然友好的特性,以及不断更新的新功能。Python越来越受到国内外开发者的喜爱。越来越多被用于独立、大型项目的开发开始使用Python。20世纪90年代初荷兰人Guido van Rossum为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,作为ABC 语言的一种继承。之所以选中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是一门强大的语言,区块链是一个强大的信用工具,这两者结合,势必能创造出新的可能性。

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

参考链接: 

;

 

来源 | Medium
作者 | arjuna sky kok
整理 / Aholiab
出品 | 区块链大本营(blockchain_camp)

发表评论
发表评论
暂无评论
    相关阅读
    18万人爆仓!比特币暴涨后突遭跳水!“狼来了”山寨币最后一跌!
    比特币
    2025-01-08 12:31:39
    此次判决关系到二级市场上的数字资产交易是否受证券法管辖。
    区块链
    2025-01-08 12:31:20
    未来一年可以说是最难以预测的一年。地缘政治错综复杂、美国监管政策不确定。尽管美国股市似乎无法停止上涨,利率也只能下降,但我们知道,这两件事都不是板上钉钉的事。
    区块链
    2025-01-08 11:31:18
    周一,比特币和以太坊 ETF 共计流入 11 亿美元,在现货基金年初出现 3.2 亿美元流入后,形成了积极的势头。
    比特币
    2025-01-08 10:31:17
    Ripple宣布已集成Chainlink,为用户提供实时RLUSD定价数据,增强了稳定币在DeFi上的实用性和访问权限。DeFi开发人员还可以将RLUSD支持集成到他们的应用程序中,用于贷款和交易等多种用例。
    区块链
    2025-01-08 10:03:08
    推荐专栏
    热门币种
    更多
    币种
    美元价格
    24H涨跌幅
    BTC比特币
    60,963.61 USDT
    ¥435,103.38
    -2.72%
    ETH以太坊
    3,368.69 USDT
    ¥24,042.67
    -0.3%
    BNB币安币
    570.68 USDT
    ¥4,073.00
    -0.28%
    USDT泰达币
    1.02 USDT
    ¥7.25
    -0.19%
    SOL
    135.96 USDT
    ¥970.36
    +7.66%
    USDC
    1.00 USDT
    ¥7.15
    -0.01%
    TON
    7.59 USDT
    ¥54.14
    +4.55%
    XRP瑞波币
    0.47720 USDT
    ¥3.41
    +0.48%
    DOGE狗狗币
    0.12210 USDT
    ¥0.87140
    +2.43%
    ADA艾达币
    0.39050 USDT
    ¥2.79
    +3.88%
    热搜币种
    更多
    币种
    美元价格
    24H涨跌幅
    狗狗币
    0.3499 USDT
    ¥2.57
    -10.56%
    Filecoin
    5.2874 USDT
    ¥38.77
    -12.83%
    比特币
    96247.13 USDT
    ¥705,645.46
    -5.36%
    Gatechain Token
    17.6291 USDT
    ¥129.25
    -4.7%
    Horizen
    22.8354 USDT
    ¥167.42
    -18.79%
    dYdX
    1.3924 USDT
    ¥10.21
    -13.94%
    柚子
    0.8057 USDT
    ¥5.91
    -11.12%
    Solana
    196.85 USDT
    ¥1,443.23
    -9.1%
    Shiba Inu
    2.157E-5 USDT
    ¥0.00
    -11.63%
    火币积分
    0.9278 USDT
    ¥6.80
    -28.99%
    Fantom
    0.6724 USDT
    ¥4.93
    -13.09%
    艾达币
    0.9901 USDT
    ¥7.26
    -9.01%
    最新快讯
    更多
    WeMade员工起诉公司未支付山寨币奖金,索赔约1100万美元
    2025-01-08 12:59:04
    中国银行原副行长王永利:理性看待特朗普的比特币新政
    2025-01-08 12:58:23
    币界网实时价格午报:OP报1.838美元/枚,跌幅达-3.06%
    2025-01-08 12:57:09
    币安将上线SONICUSDT永续合约
    2025-01-08 12:55:12
    一个新地址从Binance提出562万美元THE
    2025-01-08 12:51:20
    外媒:2024年Telegram响应900项美国用户数据查询请求
    2025-01-08 12:49:08
    Upbit24小时现货交易量排行:XRP、BTG、BTC位居前三
    2025-01-08 12:48:52