買以太坊 買以太坊
Ctrl+D 買以太坊
ads

區塊鏈:如何用 Python 快速開發一個區塊鏈數據結構?_SHA

Author:

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

作者|arjunaskykok

整理|Aholiab

出品|區塊鏈大本營

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

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

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

SWIFT探索如何支持代幣化資產市場發展中的互操作性:金色財經報道,銀行合作機構SWIFT將與 Clearstream、Northern Trust、SETL 和其他市場參與者合作,探索如何支持代幣化資產市場發展中的互操作性。相對于加密貨幣和穩定幣,目前代幣化資產的市值很小,但預計到 2027 年,交易量可能會達到約 24 萬億美元。銀行和證券公司正競相通過開發數字資產服務能力來進入這個新興市場,例如私鑰保管和對數字證券全生命周期的支持。Swift 正在探索如何在代幣化資產的交易生命周期中提高參與者和系統之間的互操作性。

Swift 首席創新官 Thomas Zschach 表示,這些實驗將使用既定的支付形式和中央銀行數字貨幣 (CBDC)。“作為一個中立的合作機構,覆蓋 200 多個國家/地區的 11,000 家機構,并受到全球中央銀行的監督,Swift 處于獨特的位置,可以密切參與證券的未來”。(finextra)[2021/12/23 7:59:31]

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

美眾議員:將繼續就如何將數字資產納入監管框架與金融服務委員會進行對話:金色財經報道,美國眾議員Don Beyer(非委員會成員)發表了一份聲明,贊賞了金融服務委員會今天舉行的聽證會,并提到了他關于加密貨幣監管的法案。他說:“我的全面數字資產立法是針對這些努力的絕佳起點。我期待與主席Maxine Waters和委員會其他成員繼續就國會如何將數字資產納入監管框架進行對話,這是行業和監管機構一直以來越來越強調的需求。[2021/12/9 13:00:06]

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

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

從哈希函數說起

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

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

數據:谷歌搜索“如何購買NFT”興趣值達到100 全球對NFT興趣在八月飆升426%:金色財經報道,根據區塊鏈中心對谷歌趨勢數據的分析顯示,2021年8月,全球對非同質化代幣(NFT)的興趣增加了426%。2021年8月1日,谷歌搜索關鍵字“如何購買NFT”的次數為19,但到2021年8月29日,該數字已經上升到100。谷歌的搜索興趣以點數來衡量,100分最高,0分最低。由于谷歌搜索“如何購買NFT”興趣值已達到100,這表明創下了2021年迄今為止的最大搜索量。另外根據國家區塊鏈,對數字藝術作品興趣最高的是新加坡,谷歌搜索值為100,澳大利亞以86分位居第二,尼日利亞緊隨其后(70分)。(finbold)[2021/9/8 23:10:29]

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

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

Peter Schiff:無論其他風險資產走向如何,比特幣都會下跌:7月21日消息,黃金支持者、比特幣反對人士Peter Schiff在最近的一條推文中表示,30000美元現在已經變成了比特幣的阻力。周一,其他風險資產被拋售,比特幣被拋售得更多;周二,隨著風險資產反彈,比特幣再次下跌。無論其他風險資產走向如何,比特幣都會下跌。(U.today)[2021/7/21 1:07:17]

這個摘要相當于是個長度為32個字節的數組,通常用一個長度為64的十六進制字符串來表示。

來看一個例子:

這句話,經過哈希函數SHA256后得到的哈希值為:

說回SHA-256,說白了,它就是一個哈希函數。那么我們如何用Python來實現呢?下面代碼展示了用Python實現「helloworld」的過程:

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

阿拉斯加女學生如何依靠2014年的比特幣課題支付大學學費:2014年,阿拉斯加的一位女學生以比特幣作為競賽項目課題,而在當時這一課題毫無疑問獲得了評委的青睞。到現在,這一課題不僅為她帶來了榮譽,還給她積累了一定的財富。而當時因為這一課題而了解到比特幣的孩子們大多數仍舊保留著這些比特幣,同時還保持著對加密貨幣的興趣。正如這故事所表明的,向孩子傳授有關金錢的知識并賦予他們一定的財務自由越早越好。[2017/12/29]

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是一門強大的語言,區塊鏈是一個強大的信用工具,這兩者結合,勢必能創造出新的可能性。

Tags:區塊鏈SHA比特幣區塊鏈工程專業學什么區塊鏈存證怎么弄區塊鏈技術發展現狀和趨勢SHA價格SHA幣比特幣中國官網聯系方式40億比特幣能提現嗎比特幣最新價格行情走勢

比特幣價格今日行情
POS:Minging 2.0,Newpool或將成為下個比特大陸?_POS幣

轉自幣乎:AlphaBo挖礦是大家并不陌生的一個詞匯,早期的挖礦多是基于工作量證明PoW機制,比較大的玩家包括BTC.com、魚池、蟻池等比特幣礦池巨頭,過去一個月里.

1900/1/1 0:00:00
ENT:「重要公告」博邁科:簽訂42億元海上液化天然氣工廠模塊建造合同;旋極信息:控股子公司擬設立大數據技術公司_ENT幣

博邁科:簽訂42億元海上液化天然氣工廠模塊建造合同博邁科(603727)7月25日晚間公告,公司與TECHNIPFranceS.A簽署了海上液化天然氣工廠模塊建造合同.

1900/1/1 0:00:00
區塊鏈:幣圈癲狂三年:給炒幣客“扎針”的交易所如今人心惶惶_比特幣

小新一位回老家的朋友上周返滬,結合上海和老家的見聞,她談到,老家連菜場的阿姨都在手機里安裝了數字貨幣交易所的App,很有熱情地學習如何炒幣.

1900/1/1 0:00:00
HAI:2020公務員考試面試熱點:80后90后成為網上捐款主力_CHA

9月5日是第四個“中華慈善日”,今年上半年民政部指定的20家互聯網公開募捐信息平臺,發布募捐信息1.7萬多條,募捐總額超過18億元人民幣.

1900/1/1 0:00:00
DNS:全球加密貨幣前100名最安全的交易所(最新)_CSS價格DNS幣

來源:區塊鏈幣資訊 加密貨幣交易者都非常關心他們最喜歡的交易所是否安全。加密貨幣領域的黑客可謂猖狂,2018年交易所被盜走巨額8.5億美元,截至目前為止,已有2.19億美元被盜.

1900/1/1 0:00:00
比特幣:谷歌量子計算機Sycamor問世,2秒可挖光區塊鏈網絡現有的比特幣?_區塊鏈比特幣中國官網聯系方式

目前只有不到300萬比特幣(BTC)有待開采,開采過程預計需要121年左右。然而,一些人聲稱谷歌的量子計算機Sycamore可以在“不到2秒”的時間內完成這項工作.

1900/1/1 0:00:00
ads