以太幣交易所 以太幣交易所
Ctrl+D 以太幣交易所
ads
首頁 > 比特幣 > Info

國外大牛教你 如何用Python開發一個簡單的區塊鏈數據結構| 建議收藏_HON

Author:

Time:1900/1/1 0:00:00

來源|Medium作者|arjunaskykok整理/Aholiab出品|區塊鏈大本營

根據IEEE此前的一項調查,Python已成為最受開發者歡迎的語言之一。由于其對于技術小白天然友好的特性,以及不斷更新的新功能。Python越來越受到國內外開發者的喜愛。越來越多被用于獨立、大型項目的開發開始使用Python。

20世紀90年代初荷蘭人GuidovanRossum為了打發圣誕節的無趣,決心開發一個新的腳本解釋程序,作為ABC語言的一種繼承。

之所以選中Python作為該編程語言的名字,是取自英國20世紀70年代首播的電視喜劇《蒙提.派森的飛行馬戲團》。

對于區塊鏈開發者來說,Python也是十分實用的語言之一。今天,我們就Python開發一個簡單的區塊鏈數據結構。

兩名美國參議員提出法案,以關注國外加密貨幣使用和挖礦:9月28日消息,美國參議員Maggie Hassan (D-NH) 和參議員Joni Ernst (R-IA) 提出一項兩黨法案,以改善對外國加密挖礦業務的監督。該法案將要求財政部向國會報告加密貨幣在外國的使用和挖礦情況,包括它們如何影響供應鏈和半導體等技術。Hassan表示,為了加強美國的競爭力,政府必須更好地處理加密貨幣在全球經濟中的作用以及其他國家如何對其進行利用。(Decrypt)[2021/9/28 17:12:29]

在這篇文章中,一方面我們會對區塊鏈數據結構的基本概念進行講解,例如哈希的工作原理,另一方面,也會以實際代碼來構建一個區塊鏈基本的數據結構,讓你對區塊鏈和Python的基礎有個基本的理解。

說不多說,下面就進入正題!

中國外匯投資研究院院長:數字人民幣不能代替人民幣國際化:近期,中國央行在深圳市開展了數字人民幣紅包試點。有觀點認為,人民幣數字化后,可大大加快人民幣國際化的進程。中國外匯投資研究院院長、首席經濟學家譚雅玲接受采訪時表示,數字貨幣的推進可能對人民幣國際化是一種輔助,但是不能代替人民幣國際化,所以發展數字人民幣要保持一個節奏,保持一種理性,人民幣最終可自由兌換才是人民幣國際化的根本目標。(財聯社)[2020/10/17]

從哈希函數說起

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

但在講數字結構之前,我們還是先從哈希講起,以比特幣的SHA-256哈希函數為例,講講如何利用Python去實現哈希的運算。

重慶男子用比特幣從國外購買大麻葉吸食被捕:6月26日,重慶市一中法院發布了兩例國外購大麻葉和大麻油的典型案例。陳某是一名酒吧主持人。去年7月下旬,他通過網絡以0.20424比特幣,約折合人民幣1.4余萬元的價格,購買國外直郵的大麻葉,用于自己和酒吧的說唱歌手吸食,并在微信上預售。同年8月初,陳某前往投攬站收取郵件時,被民警當場抓獲。法院認為,大麻葉屬于我國刑法打擊的范圍。陳某違反海關和管理的相關法規,從美國購買大麻葉,不僅用于自己和他人吸食,還有販賣的故意和行為,構成走私、販賣罪。據此,判處陳某有期徒刑6個月,并處罰金人民幣1萬元。(上游新聞)[2020/6/26]

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

聲音 | 國家外匯管理局官員:應將Libra視作外幣 納入中國外匯管理體框架:據澎湃新聞消息,昨日在第三屆中國金融四十人伊春論壇上,國家外匯管理局總會計師孫天琦認為,應將Libra視作外幣,必須納入中國外匯管理整體框架,否則建議禁止使用Libra。另外,除國家另有規定極少數極少數情況外,中國境內必須以人民幣計價結算。包括數字環境下的境內交易的計價結算。絕不能出現在數字環境下境內交易的Libra化或者是美元化。[2019/8/11]

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

這個摘要相當于是個長度為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位,生成的字符數也是一樣的。例如:

在上面例子中,「Iamthebestpresident.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次方。這個數字幾乎相當于宇宙內的原子數量!

要運算這個數字需要多長時間?以英偉達Geforce1080Ti顯卡,浮點運算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

Tags:HONYTH區塊鏈SHAPHONONZYTH區塊鏈害了多少人Shambala

比特幣
拳王曼尼·帕奎奧首場大型音樂會與拳王幣(PAC TOKEN) 發行圓滿落幕_COX

2019年9月1日,星期日。全球明星幣數字貨幣交易所GCOX與SATOX中本交易所在位于馬尼拉的亞諾尼拉智能體育館為世界拳王曼尼·帕奎奧舉辦了場面壯觀的個人大型音樂會.

1900/1/1 0:00:00
當貨幣政策無法在經濟調節中奏效 對比特幣意味著什么?_比特幣

金色財經比特幣9月10日訊貝萊特集團全球固定收益首席投資官RickRieder發文論述了如今經濟和貨幣政策狀況,他認為如果經濟增長停滯不前,生產力也無法達到預期、甚至會激發民粹主義.

1900/1/1 0:00:00
9.8早間行情:btc止跌企穩 它成龍頭_BTC

比特幣止跌企穩,主流幣在EOS帶領下集體反彈日線級別,比特幣仍是縮量整理走勢,MA7日均線有上穿MA60日均線的跡象,短時盤面看反彈走勢;小時線級別,比特幣昨天小幅回撤后.

1900/1/1 0:00:00
Gate.io 官方Youtube頻道《征服區塊鏈》直播介紹及進展公告_GAT

由Gate.io官方制作的《征服區塊鏈》直播欄目在Youtube頻道上一經播出就深受Gate.io用戶以及熱切關注區塊鏈行業伙伴們的關注與喜愛.

1900/1/1 0:00:00
IEO面臨崩盤?牛市還在嗎?——區塊鏈周報0908_BTC

導讀 2019年下半年,隨著BTC價格短期見頂,市場成交量不斷萎縮,各大平臺IEO的收益率也有下降趨勢,BNB也從高點近40美元下跌到21美元.

1900/1/1 0:00:00
全球著名投資機構a16z合伙人:重新思考區塊鏈計算層級_比特幣

去年,我寫了一篇文章:區塊鏈計算的4個發展階段,介紹了區塊鏈的一個殺手級特性——可組合性。最近,我的想法發生了變化,所以有了這篇關于生態系統發展的新思路&新模型的文章.

1900/1/1 0:00:00
ads