欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

國外大牛教你,如何用Python開發(fā)一個簡單的區(qū)塊鏈數(shù)據(jù)結(jié)構(gòu)| 建議收藏

系統(tǒng) 1744 0

國外大牛教你,如何用Python開發(fā)一個簡單的區(qū)塊鏈數(shù)據(jù)結(jié)構(gòu)| 建議收藏_第1張圖片

來源? | M edium

作者 | arjuna sky kok

整理 /?Aholiab

出品 |?區(qū)塊鏈大本營(blockchain_camp)

根據(jù)IEEE此前的一項(xiàng)調(diào)查, Python已成為最受開發(fā)者歡迎的語言之一。 由于其對于技術(shù)小白天然友好的特性,以及不斷更新的新功能。Python越來越受到國內(nèi)外開發(fā)者的喜愛。越來越多被用于獨(dú)立、大型項(xiàng)目的開發(fā)開始使用Python。

20世紀(jì)90年代初荷蘭人Guido van Rossum為了打發(fā)圣誕節(jié)的無趣,決心開發(fā)一個新的腳本解釋程序,作為ABC 語言的一種繼承。

之所以選中Python(大蟒蛇的意思)作為該編程語言的名字,是取自英國20世紀(jì)70年代首播的電視喜劇《蒙提.派森的飛行馬戲團(tuán)》(Monty Python's Flying Circus)

國外大牛教你,如何用Python開發(fā)一個簡單的區(qū)塊鏈數(shù)據(jù)結(jié)構(gòu)| 建議收藏_第2張圖片

?

對于區(qū)塊鏈開發(fā)者來說,Python也是十分實(shí)用的語言之一。 今天,我們就Python開發(fā)一個簡單的區(qū)塊鏈數(shù)據(jù)結(jié)構(gòu)。

?

在這篇文章中, 一方面我們會對區(qū)塊鏈數(shù)據(jù)結(jié)構(gòu)的基本概念進(jìn)行講解 ,例如哈希的工作原理, 另一方面,也會以實(shí)際代碼來構(gòu)建一個區(qū)塊鏈基本的數(shù)據(jù)結(jié)構(gòu), 讓你對區(qū)塊鏈和Python的基礎(chǔ)有個基本的理解。

?

說不多說,下面就進(jìn)入正題!

?

?

從哈希函數(shù)說起

?

在區(qū)塊鏈中,數(shù)據(jù)結(jié)構(gòu)是十分重要的基本組成部分,尤其是比特幣。 雖然單一的數(shù)據(jù)結(jié)構(gòu)無法構(gòu)建成加密數(shù)字貨幣,但理解數(shù)據(jù)結(jié)構(gòu)對于理解區(qū)塊鏈的基本原理是非常有益處的。

?

但在講數(shù)字結(jié)構(gòu)之前,我們還是先從哈希講起,以比特幣的SHA-256哈希函數(shù)為例,講講如何利用Python去實(shí)現(xiàn)哈希的運(yùn)算。

?

哈希函數(shù),又稱散列算法,是一種從任何一種數(shù)據(jù)中創(chuàng)建小的數(shù)字“指紋”的方法。 散列函數(shù)把消息或數(shù)據(jù)壓縮成摘要,使得數(shù)據(jù)量變小,將數(shù)據(jù)的格式固定下來。該函數(shù)將數(shù)據(jù)打亂混合,重新創(chuàng)建一個叫做散列值(或哈希值)的指紋。散列值通常用一個短的隨機(jī)字母和數(shù)字組成的字符串來代表。

?

對于任意長度的消息,SHA256都會產(chǎn)生一個256bit長的哈希值,稱作消息摘要。

?

這個摘要相當(dāng)于是個長度為32個字節(jié)的數(shù)組,通常用一個長度為64的十六進(jìn)制字符串來表示。

?

來看一個例子:

?

640?wx_fmt=png

這句話,經(jīng)過哈希函數(shù)SHA256后得到的哈希值為:

?

640?wx_fmt=png

說回SHA-256,說白了,它就是一個哈希函數(shù)。那么我們?nèi)绾斡肞ython來實(shí)現(xiàn)呢?下面代碼展示了用Python實(shí)現(xiàn)「hello world」的過程:

?

640?wx_fmt=png

看到這里你可能會問,SHA-256中的「256」究竟是什么意思? 哈希算法是一個將任意文本轉(zhuǎn)換為一個256位隨機(jī)二進(jìn)制字符串的過程。在上面的例子中,「hello world」是一個11位的字符(只算字母),經(jīng)過哈希運(yùn)算以后,變成了這樣的一串字符:

?

b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9

?

同樣,即使我的文本長度不是11位,生成的字符數(shù)也是一樣的。例如:

?

640?wx_fmt=png

在上面例子中,「I am the best president. Ever.」(意為:我是史上最好的總統(tǒng)),哈希運(yùn)算之后的字符串一樣為64位。就算輸入的文本是100位,哈希運(yùn)算后的字符位數(shù)也是64位。

?

之所以這樣,是因?yàn)樽址?6進(jìn)制的,如果我們把這樣的字符串轉(zhuǎn)換為2進(jìn)制,那么就會得到一個256位的2進(jìn)制字符串。 如下圖所示:

?

國外大牛教你,如何用Python開發(fā)一個簡單的區(qū)塊鏈數(shù)據(jù)結(jié)構(gòu)| 建議收藏_第3張圖片

這就是SHA-256中,256這個數(shù)字的由來。

?

接下來我們就來看看哈希算法有哪些特征。哈希的特征之一就是「無沖突原則」。這個原則是指要得到一個256位的2進(jìn)制字符串,顯然有不止一個輸入可以做到。

因?yàn)?56位的輸出長度是固定的,但輸入的長度卻沒有限制,所以輸入的范圍要遠(yuǎn)大于輸出,只要能夠窮盡輸入,就有可能得到2個一樣的256位的輸出。

?

話雖如此,不過要找到這樣兩個輸入的難度卻很大。即使是輸入上改動了一點(diǎn),輸出的結(jié)果都會完全不同。如下圖所示:

?

國外大牛教你,如何用Python開發(fā)一個簡單的區(qū)塊鏈數(shù)據(jù)結(jié)構(gòu)| 建議收藏_第4張圖片

所以,想要找到2中一樣的輸出的唯一方法,是窮盡所有的字幕、數(shù)字組合,這幾乎無法做到。 幾率為2的256次方

?

這是個多大的數(shù)字?展開來就是醬嬸兒的:

115792089237316195423570985008687907853269984665640564039457584007913129639936

?

幾乎相當(dāng)于10的77次方。這是個什么概念?在460億光年的宇宙內(nèi),可見的原子數(shù)量也只有10的78次方。 這個數(shù)字幾乎相當(dāng)于宇宙內(nèi)的原子數(shù)量!

?

國外大牛教你,如何用Python開發(fā)一個簡單的區(qū)塊鏈數(shù)據(jù)結(jié)構(gòu)| 建議收藏_第5張圖片

?

要運(yùn)算這個數(shù)字需要多長時間?以英偉達(dá)Geforce 1080 Ti顯卡,浮點(diǎn)運(yùn)算11.3的算力來運(yùn)算, 每個哈希需要運(yùn)算3000次,以每秒鐘3766666666個哈希的速度來運(yùn)算,找到兩個相同的哈希運(yùn)算結(jié)果,需要計算2的128次方個哈希 。地球上所有的人一起計算,需要的時間如下:

?

640?wx_fmt=png

?

這比地球存在的實(shí)時間都要長。

?

?

用Python創(chuàng)建第一個區(qū)塊

?

了解了什么是哈希,我們接著就來說說什么是區(qū)塊。實(shí)際上,區(qū)塊鏈就是一個互相連接的序列。我們接下來創(chuàng)建第一個區(qū)塊,也稱為「創(chuàng)世區(qū)塊」。代碼如下所示:

?

國外大牛教你,如何用Python開發(fā)一個簡單的區(qū)塊鏈數(shù)據(jù)結(jié)構(gòu)| 建議收藏_第6張圖片

區(qū)塊鏈中會包含交易,交易很好理解,就是誰轉(zhuǎn)了多少錢給誰。我們把區(qū)塊進(jìn)行序列,這樣它就可以進(jìn)行哈希運(yùn)算:

?

國外大牛教你,如何用Python開發(fā)一個簡單的區(qū)塊鏈數(shù)據(jù)結(jié)構(gòu)| 建議收藏_第7張圖片

這樣,我們就得到了另一個區(qū)塊,我們姑且稱它為「區(qū)塊2」:

? 國外大牛教你,如何用Python開發(fā)一個簡單的區(qū)塊鏈數(shù)據(jù)結(jié)構(gòu)| 建議收藏_第8張圖片

再對區(qū)塊2進(jìn)行哈希運(yùn)算:

? 640?wx_fmt=png

得到了「區(qū)塊3」。

?

國外大牛教你,如何用Python開發(fā)一個簡單的區(qū)塊鏈數(shù)據(jù)結(jié)構(gòu)| 建議收藏_第9張圖片

再對區(qū)塊3進(jìn)行哈希運(yùn)算,得到了「區(qū)塊4」。

? 640?wx_fmt=png

這樣一來,想要確定區(qū)塊上的數(shù)據(jù)沒有被篡改,我只需要檢查最后一個區(qū)塊的哈希就行了。而不是從創(chuàng)世區(qū)塊開始檢查。這一原理也杜絕了區(qū)塊鏈上數(shù)據(jù)被攢該的可能。

?

國外大牛教你,如何用Python開發(fā)一個簡單的區(qū)塊鏈數(shù)據(jù)結(jié)構(gòu)| 建議收藏_第10張圖片

?

通過以上代碼,可以得到下面結(jié)果:

?

國外大牛教你,如何用Python開發(fā)一個簡單的區(qū)塊鏈數(shù)據(jù)結(jié)構(gòu)| 建議收藏_第11張圖片

這樣,用Python實(shí)現(xiàn)簡單的區(qū)塊鏈開發(fā)的演示就結(jié)束了。 Python是一門強(qiáng)大的語言,區(qū)塊鏈?zhǔn)且粋€強(qiáng)大的信用工具,這兩者結(jié)合,勢必能創(chuàng)造出新的可能性。

?

怎么樣,今天的內(nèi)容你都學(xué)會了嗎?還想看哪些技術(shù)教程,歡迎留言告訴營長!

?

?

參考鏈接: ?

https://medium.com/coinmonks/building-a-simple-blockchain-data-structure-with-python-e7ebd448647a

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

640?wx_fmt=gif

推薦閱讀:

  • 干貨 | 幾行代碼就能擼一個文檔注冊Dapp,一文學(xué)會以太坊Dapp開發(fā)

  • 預(yù)警,CSW的50萬枚塵封BTC即將重返市場

  • TechHQ首席架構(gòu)師濃縮1000小時的項(xiàng)目經(jīng)驗(yàn)總結(jié)出5大技能點(diǎn),架構(gòu)師必看!

  • AI 假冒老板騙取 24.3 萬美元!

  • 倒計時1天 | 2019 AI ProCon報名通道即將關(guān)閉(附參會指南)

  • 亞馬遜首席科學(xué)家李沐「實(shí)訓(xùn)營」國內(nèi)獨(dú)家直播,馬上報名?!

  • Android 10 重磅來襲: 支持 5G 與折疊屏、隱私安全全面升級!

  • 阿里云 CDN 業(yè)務(wù)基于邊緣容器的云原生轉(zhuǎn)型實(shí)踐

猛戳 "閱讀原文" 有驚喜喲 smiley_12.png

老鐵在看了嗎?


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧美日韩一区不卡 | 欧美日韩不卡合集视频 | 成人久久久 | av在线等| 国产精品99久久久久 | 欧美jizzjizz在线播放 | jizz日本女人 | 日日摸夜夜添夜夜添精品视频 | 亚洲国产精品久久久 | av毛片免费看 | 五月色开心婷婷丁香在线 | 五月天婷婷缴情五月免费观看 | 天干夜天天夜天干天 | 91亚洲精品丁香在线观看 | 在线观看欧美三级 | 成人看片| 奇米影视 首页 | 一级做a爰性色毛片免费 | www.久草| 成人毛片免费网站 | 国产福利福利视频 | 色综合久久综合中文小说 | 国产成人精品福利站 | 久久久久免费观看 | 中文字幕av在线 | 狠狠色丁香婷婷综合橹不卡 | 久久精品国产一区二区电影 | 免费在线看a | 西西人体大胆77777视频 | 日日摸夜夜添夜夜添亚洲女人 | 国产精品久久自在自2021 | 久久久久国产一区二区三区 | 日韩在线免费 | 中文字幕在线视频日本 | 天天操天天添 | 精品亚洲成a人片在线观看 在线看片h站 | 噜噜噜天天躁狠狠躁夜夜精品 | 久久国内精品 | 亚洲国产精品第一区二区三区 | 一区二区三区四区免费 | 色在线视频网站 |