作者|arjunaskykok
整理|Aholiab
出品|區塊鏈大本營
根據IEEE此前的一項調查,Python已成為最受開發者歡迎的語言之一。由于其對于技術小白天然友好的特性,以及不斷更新的新功能。Python越來越受到國內外開發者的喜愛。越來越多被用于獨立、大型項目的開發開始使用Python。
20世紀90年代初荷蘭人GuidovanRossum為了打發圣誕節的無趣,決心開發一個新的腳本解釋程序,作為ABC語言的一種繼承。
之所以選中Python作為該編程語言的名字,是取自英國20世紀70年代首播的電視喜劇《蒙提.派森的飛行馬戲團》。
FIBA提問:15個比特幣你如何選球員?郭艾倫周琦上榜:金色財經報道,國際籃球聯合會(FIBA)亞洲杯官方更新社媒,拋出了“用15個比特幣組建陣容”的話題。“你會用哪些亞洲球星來組建你的最佳陣容?”FIBA亞洲杯官方社媒寫道。其中,郭艾倫出現在了得分后衛的位置上,需要用最多的5個比特幣來選擇。出現在中鋒位置上的周琦,需要用2個比特幣選擇,而在中鋒位置上,比特幣最高的是哈達迪。[2022/6/28 1:35:49]
對于區塊鏈開發者來說,Python也是十分實用的語言之一。今天,我們就Python開發一個簡單的區塊鏈數據結構。
在這篇文章中,一方面我們會對區塊鏈數據結構的基本概念進行講解,例如哈希的工作原理,另一方面,也會以實際代碼來構建一個區塊鏈基本的數據結構,讓你對區塊鏈和Python的基礎有個基本的理解。
說不多說,下面就進入正題!
從哈希函數說起
在區塊鏈中,數據結構是十分重要的基本組成部分,尤其是比特幣。雖然單一的數據結構無法構建成加密數字貨幣,但理解數據結構對于理解區塊鏈的基本原理是非常有益處的。
直播|Aaron:DeFi加速領跑,如何獲得持久發展?:金色財經 · 直播主辦的金點Trend《2020 DeFi Dai飛嗎?》馬上開始!DeFi生態里,我們還應該狙擊哪些項目?成長空間是多少?應該關注哪些風險?16:00準時開播!本場嘉賓Kava全球業務發展副總裁Aaron Choi分享“DeFi加速領跑,如何獲得持久發展?”,請掃碼移步收聽![2020/7/29]
但在講數字結構之前,我們還是先從哈希講起,以比特幣的SHA-256哈希函數為例,講講如何利用Python去實現哈希的運算。
哈希函數,又稱散列算法,是一種從任何一種數據中創建小的數字“指紋”的方法。散列函數把消息或數據壓縮成摘要,使得數據量變小,將數據的格式固定下來。該函數將數據打亂混合,重新創建一個叫做散列值的指紋。散列值通常用一個短的隨機字母和數字組成的字符串來代表。
對于任意長度的消息,SHA256都會產生一個256bit長的哈希值,稱作消息摘要。
這個摘要相當于是個長度為32個字節的數組,通常用一個長度為64的十六進制字符串來表示。
回溯3.12 如何跨越從爆倉到回本的鴻溝:4月27日20:00,波哥做客金色財經《幣情觀察室》直播間,將分享《回溯3.12 如何跨越從爆倉到回本的鴻溝》,敬請關注,欲進群觀看直播掃描海報二維碼報名即可。[2020/4/27]
來看一個例子:
這句話,經過哈希函數SHA256后得到的哈希值為:
說回SHA-256,說白了,它就是一個哈希函數。那么我們如何用Python來實現呢?下面代碼展示了用Python實現「helloworld」的過程:
看到這里你可能會問,SHA-256中的「256」究竟是什么意思?哈希算法是一個將任意文本轉換為一個256位隨機二進制字符串的過程。在上面的例子中,「helloworld」是一個11位的字符,經過哈希運算以后,變成了這樣的一串字符:
b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
同樣,即使我的文本長度不是11位,生成的字符數也是一樣的。例如:
動態 | 受監管代幣交易商尋求SEC澄清數字資產如何符合美國證券法:據Coindesk報道,受監管的代幣交易商Templum希望美國證券交易委員會(SEC)澄清在區塊鏈上跟蹤或代幣化的數字資產如何符合美國證券法規。為此,該公司上周向SEC提交了一份規則制定請愿書,其中概述了在某些形式的證券交易中如何利用加密資產和區塊鏈技術。Templum聯合創始人兼首席執行官Vince Molinari表示,該公司要求明確這些新生技術如何適應當前的監管計劃。 至少在他們看來,它們并不存在于現有框架中。具體而言,Templum希望SEC解釋區塊鏈平臺何時必須注冊為清算公司或清算公司可以如何使用區塊鏈,以及區塊鏈平臺何時必須注冊為轉賬代理或告知數字資產發行人何時必須使用區塊鏈轉賬代理人。該公司還試圖了解SEC會何時可對現有的托管和客戶保護規則進行改善,以允許用于跟蹤證券交易的區塊鏈。[2018/12/21]
聲音 | FBG資本的Nathan Li:加密行業中的人應該接受更多關于如何區分的教育:在今日共識大會新加坡站,FBG資本的Nathan Li談到項目詐騙時表示,在加密行業中,人們應該接受更多關于如何區分的教育。投機是好事,每個人都想在這個領域賺錢。但我們應該意識到現實是什么。[2018/9/20]
在上面例子中,「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是一門強大的語言,區塊鏈是一個強大的信用工具,這兩者結合,勢必能創造出新的可能性。
Tags:區塊鏈SHA比特幣區塊鏈工程專業學什么區塊鏈存證怎么弄區塊鏈技術發展現狀和趨勢SHA價格SHA幣比特幣中國官網聯系方式40億比特幣能提現嗎比特幣最新價格行情走勢
昨天,去中心化交易所協議0x項目方稱其發現嚴重安全漏洞。PeckShield安全人員跟進分析發現,0xExchange合約在校驗訂單簽名時存在缺陷,導致攻擊者可以進行惡意掛單,進而將用戶的數字資.
1900/1/1 0:00:002019年版第五套人民幣來了8月30日,中國人民銀行將發行2019年版第五套新版人民幣!新幣包含50元、20元、10元、1元紙幣,還有1元、5角和1角硬幣.
1900/1/1 0:00:00常言道“萬事開頭難”,一旦踏上古董收藏之路你就不再是歷史的看客,而是時代的精英,是歷史遺物的守望者,是億萬收藏大軍中敢于直面人生的先鋒戰士.
1900/1/1 0:00:00索尼PS4獨占游戲大作《最后生還者2》確認將于2020年2月21日發售,官方也曝光了該作各個版本的售價和包含內容介紹,其中標準版售價468港幣,數字豪華版售價568港幣.
1900/1/1 0:00:00來源:央視網 又見“呵呵”體,這一次是什么事讓我們主播海霞只能“呵呵”兩聲呢?一起接著往下看 網友如何看? 美國絕活:顛倒黑白 思考人生的單刀:我也呵呵兩聲顧名思義:對美國.
1900/1/1 0:00:00現在手機支付非常方便,但生活中還是有很多地方會用到現金。比如做小生意的,會收到很多零鈔和硬幣。如果收到大量零錢,要到銀行里換整錢或存錢,是怎樣一個手續呢?大家都知道,整張的100元和50元可以在.
1900/1/1 0:00:00