根據IEEE此前的一項調查,
Python已成為最受開發者歡迎的語言之一。由于其對于技術小白天然友好的特性,以及不斷更新的新功能。Python越來越受到國內外開發者的喜愛。越來越多被用于獨立、大型項目的開發開始使用Python。
20世紀90年代初荷蘭人GuidovanRossum為了打發圣誕節的無趣,決心開發一個新的腳本解釋程序,作為ABC語言的一種繼承。
之所以選中Python作為該編程語言的名字,是取自英國20世紀70年代首播的電視喜劇《蒙提.派森的飛行馬戲團》。
對于區塊鏈開發者來說,Python也是十分實用的語言之一。今天,我們就Python開發一個簡單的區塊鏈數據結構。
在這篇文章中,一方面我們會對區塊鏈數據結構的基本概念進行講解,例如哈希的工作原理,另一方面,也會以實際代碼來構建一個區塊鏈基本的數據結構,讓你對區塊鏈和Python的基礎有個基本的理解。
說不多說,下面就進入正題!
美國外國資產控制辦公室正尋求區塊鏈分析工具:金色財經報道,公共記錄顯示,隸屬于美國財政部的美國外國資產控制辦公室(OFAC)正在尋求區塊鏈分析工具。OFAC需要一個或多個商業在線區塊鏈跟蹤工具。這些工具將用于為OFAC全球目標辦公室小組的調查人員分析和跟蹤虛擬貨幣交易(例如比特幣)做準備。承包商提交能力聲明的截止日期為2021年5月25日美國東部時間下午2:00。[2021/5/7 21:31:24]
從哈希函數說起
在區塊鏈中,數據結構是十分重要的基本組成部分,尤其是比特幣。雖然單一的數據結構無法構建成加密數字貨幣,但理解數據結構對于理解區塊鏈的基本原理是非常有益處的。
但在講數字結構之前,我們還是先從哈希講起,以比特幣的SHA-256哈希函數為例,講講如何利用Python去實現哈希的運算。
哈希函數,又稱散列算法,是一種從任何一種數據中創建小的數字“指紋”的方法。散列函數把消息或數據壓縮成摘要,使得數據量變小,將數據的格式固定下來。該函數將數據打亂混合,重新創建一個叫做散列值的指紋。散列值通常用一個短的隨機字母和數字組成的字符串來代表。
對于任意長度的消息,SHA256都會產生一個256bit長的哈希值,稱作消息摘要。
中國互金協會區塊鏈報告:警惕對國外開源程序的技術依賴:4月14日,中國互聯網金融協會區塊鏈研究工作組對外發布《中國區塊鏈金融應用與發展研究報告(2020)》(下文簡稱《報告》)。《報告》認為,全球區塊鏈技術正在加速演進成熟,金融領域的應用探索日漸增多,主要國家金融管理部門對區塊鏈技術在金融領域應用持相對積極的態度。
《報告》指出,在我國,區塊鏈技術適用的金融場景環節與應用邏輯已較為明晰,但在金融領域的應用仍存風險,比如技術層面尚難以兼顧部分金融場景對安全、功能和性能的要求;治理層面需進一步完善監管、標準、人才等有關安排;業務層面尚存模糊地帶且應用創新缺少權威第三方評估等。《報告》認為,區塊鏈技術比較適用于存在多方交易且信任基礎較弱的特定金融場景,其分布式架構、塊鏈式結構、共識機制、時間戳等技術安排有助于提升鏈上信息的篡改難度和可追溯性、緩解信息不對稱現象,與加密技術的結合有助于提升隱私保護力度、降低數據泄露風險,而P2P網絡的運用有助于在分布式環境下實現高效協同,智能合約的引入則有助于實現復雜業務流程的自動執行,可用于融資、保險科技、跨境支付、資產證券化、金融監管等場景,增加信息可信度、緩解重復交易,提高相關參與方信息交流積極性和業務處理效率,且能在一定程度上降低道德風險和操作風險。[2020/4/14]
這個摘要相當于是個長度為32個字節的數組,通常用一個長度為64的十六進制字符串來表示。
動態 | 德國外匯經紀商FXFlat宣布增加加密貨幣交易種類:據Finance Magnates消息,德國外匯經紀商富萊證券(FXFlat)宣布擴大其加密貨幣交易服務種類。受德國BaFin監管的加密貨幣差價合約列表現在額外包括了比特幣現金、達世幣、以太坊、瑞波幣和萊特幣。該公司表示,新加密資產的加入將使交易商能夠適當地實現其加密資產的多樣化。[2019/3/9]
來看一個例子:
這句話,經過哈希函數SHA256后得到的哈希值為:
說回SHA-256,說白了,它就是一個哈希函數。那么我們如何用Python來實現呢?下面代碼展示了用Python實現「helloworld」的過程:
看到這里你可能會問,SHA-256中的「256」究竟是什么意思?哈希算法是一個將任意文本轉換為一個256位隨機二進制字符串的過程。在上面的例子中,「helloworld」是一個11位的字符,經過哈希運算以后,變成了這樣的一串字符:
動態 | 報告:在國外市場 區塊鏈應用程序員是最搶手的:據羊城晚報消息,近日,就業安置機構Hired對自家平臺上的98000名程序員進行了一項調查,最終發現,在國外市場,區塊鏈應用程序員是最搶手的。從2017年到2018年,雇主對擁有區塊鏈開發經驗的程序員的需求猛增517%。除此之外,安全工程師也頗受青睞,需求同比增長132%。而在受訪的程序員中,只有12%的人表示他們對區塊鏈技術最感興趣。[2019/3/9]
b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
同樣,即使我的文本長度不是11位,生成的字符數也是一樣的。例如:
在上面例子中,「Iamthebestpresident.Ever.」,哈希運算之后的字符串一樣為64位。就算輸入的文本是100位,哈希運算后的字符位數也是64位。
之所以這樣,是因為字符是16進制的,如果我們把這樣的字符串轉換為2進制,那么就會得到一個256位的2進制字符串。如下圖所示:
聲音 | 央行潘功勝:機構跑到國外仍對中國居民開展業務是“非法并禁止的”:據第一財經消息,中國人民銀行副行長潘功勝表示,ICO以及各類變相的ICO,比特幣等數字貨幣交易活動,以及互聯網外匯交易平臺,涉及非法集資和非法發行證券,“是不讓干的”。他繼續強調,目前部分機構在中國國內受到打擊之后,跑到國外,未經中國政府許可,仍然對中國的居民開展業務,這也是明確為非法并禁止的。他著重強調了要遏制增量風險。對一些新的互聯網金融產品和業態的出現,在現有法律和政策框架中,如果不符合,那么“露頭”就打。[2018/7/9]
這就是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->
https://blog.csdn.net/u011583927/article/details/80905740
來源?
|Medium
作者|arjunaskykok
整理/?Aholiab
出品|?區塊鏈大本營
目前的加密貨幣世界起源于比特幣,每一個“純正”的加密貨幣的誕生,往往都和比特幣的某個缺點有關,或許是共識機制,或許是交易速度,或許是轉賬費用,或許是不夠匿名.
1900/1/1 0:00:00作者|哈希派分析團隊 CME比特幣期貨持倉周報:未平倉總量上升至14,854張:10月31日消息,據KingData數據監控.
1900/1/1 0:00:00想要竊取比特幣?你要做的就是找到受害者16個字符的公鑰,并通過解決“橢圓曲線離散對數問題”來計算他們的私鑰。沒問題,如果用一臺普通的計算機,這將花費你大約6.5億年.
1900/1/1 0:00:00提起暗網,總會讓人不自覺聯想到BTC;但現如今暗網世界里活躍度最高的加密貨幣已不再是比特幣,非法交易的最優選也并非BTC,而是熱度一直不溫不火的——門羅幣.
1900/1/1 0:00:00作者|哈希派分析團隊 金色財經合約行情分析 | BTC在12000美元下方窄幅盤整:據火幣BTC永續合約行情顯示,截至今日18:00(GMT+8),BTC價格暫報11825美元(+0.66%).
1900/1/1 0:00:00八號在曼谷的Tepleton大會上,受邀嘉賓基本都是貝爾鏈社區的領導人。這個故事,比很多精心設計的劇本還要精彩。在詆毀和污蔑聲中,貝爾鏈一次高光的崩盤表演,要落幕了.
1900/1/1 0:00:00