比特幣交易所 比特幣交易所
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年代首播的電視喜劇《蒙提.派森的飛行馬戲團》。

薩爾瓦多居民仍對如何使用比特幣和Chivo錢包感到困惑:11月27日消息,薩爾瓦多政府此前通過Chivo錢包向當地居民發放了價值30美元的比特幣,兩個月后,許多人仍然對如何使用比特幣和該應用感到困惑,他們在花掉或兌現比特幣后,已經完全放棄使用Chivo。其他人則表示,他們仍在坐等價格上漲。30歲的機修工Luis Mauricio表示:“Chivo還不能完全運作,但我希望隨著時間的推移,它能得到修復,這會讓人們對它的使用更有信心。”他補充說,自己在周末使用Chivo ATM機時也遇到了問題。

此前消息,數百名薩爾瓦多人10月底表示,有黑客用其身份證號碼打開了Chivo錢包,以獲得政府提供的30美元比特幣獎勵。(Decrypt)[2021/11/28 12:36:42]

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

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

直播 |“后浪”仙女魚池-青青如何乘風破浪:金色財經 · 直播主辦的《 幣圈 “后浪” 仙女直播周》第7期11:00 F2Pool 魚池|CMO青青將在直播間聊聊“幣圈‘后浪’仙女如何乘風破浪”,感興趣的朋友掃碼移步收聽![2020/7/2]

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

從哈希函數說起

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

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

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

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

聲音 | Jeffrey Wernick:華爾街不喜歡比特幣 不知如何用它講好故事:芝加哥大學經濟學與金融學博士、區塊鏈和比特幣項目早期參與者、Uber和Airbnb早期投資人Jeffrey Wernick稱,華爾街不喜歡比特幣,或因不知如何用其講好故事拿下高估值。Wernick認為,現在的華爾街的公司估值模式已經從傳統的現金流折現模型(DCF)轉向通過炒作故事概念來獲取高估值。他認為,DCF是里的清的帳,可以通過現有現金流、未來增長預期和折現率定價求得。在這種模式下的高估值是因為,低融資成本下的低折現率導致的。Wernick解釋,在炒作概念的估值模式里,項目方會找博士來撰寫估值模式和框架,并稱這是正確的估值方法,接著再找更多人的輸出類似的觀點,造成一個所謂的共識,最后再說服其他人接受這一共識。之后,他們會如法炮制的輸出“為什么這家公司估值應該比去年更高“的共識。但是,這些始終都是概念。Wernick還指出,特斯拉就是通過炒作概念來獲取高估值的,通過不斷地講故事來維持高估值、保證投資人不受損失。[2019/6/21]

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

聲音 | Robert Rosenblum:如果監管者將加密貨幣視為證券,應明確公眾如何購以及交易市場建立場地等問題:據CoinDesk消息,在Token Summit 2019會議上,Wilson SAonsini Goodrich&Rosati公司的律師Robert Rosenblum表示,他的公司通常將大多數加密貨幣視為證券。當時他的同事總是感覺存在差距,“那么,現在怎么辦?”換句話說,監管者需要解釋,如果代幣是證券,公眾應該如何購買,交易市場可以在哪里建立。Cosmos創始人Jae Kwon也提出類似觀點。他指出,沒有人知道如何以美國監管機構目前認可的方式經營去中心化交易所。但是Robert Rosenblum似乎覺得這是可以解決的,“只有當我們擁有一個運行良好的市場,我們才會有更多的經驗和更好的框架。”不過,這需要多長時間?這成了根本問題。緩慢折磨著快速發展的行業。歐洲合規公司MME的律師Andreas Glarner表示,來自歐洲的觀點是整個行業都很困惑:“大約五年后,答案是還不清楚。否則,我們不會坐在這里(討論)。那是外面的景色。[2019/5/18]

來看一個例子:

現場 | 以太坊行業峰會第一場圓桌 如何應對智能合約安全問題:金色財經9月8日現場報道,Loi Luu (KyberNetwork 創始人)、Shawn Douglass

(Amberdata 聯合創始人兼CEO)、Jay Zhou (Loopring Protocol 聯合創始人)、Alan Li (FBG X 研發部負責人)、Antoine Cote (Enuma Technologies 聯合創始人兼CEO) 參與了討論,嘉賓們一致認為,由于智能合約涉及資產交易且不可篡改,一旦發生安全問題將引起資產嚴重受損,關注智能合約安全是必要的。Loi Luu指出,區塊鏈行業項目方,需要為開發者設立預警機制。開源代碼要引入第三方檢測,避免犯一些顯而易見的錯誤。

Jay zhou認為,需要更有經驗的開發者去開發用戶易用、以人為本的合約,同時也有必要引入交叉審計。

Shawn Douglass說:“因為智能合約的不可篡改性,在程序員開發前,就必須告知開發者未來可能造成的后果,特別是在涉及資產的領域必須確保事前萬無一失甚至考慮保險。”

Antoine Cote表示,可以在早期時候引入懸賞機制讓黑客或者社區成員共同發現漏洞。大家討論后得出共識,每一個開發者都必須在開發速度和安全性之間做一個平衡。在區塊鏈領域,注重安全和責任心是必須的。[2018/9/8]

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

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

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

幣安下載
羅玫:“臉書”的數字貨幣Libra項目——中國絕地反擊的思考_區塊鏈

作者:羅玫,美國加州伯克利大學博士,清華大學經濟管理學院會計系副教授、美國會計協會會員、美國金融協會會員.

1900/1/1 0:00:00
萊特幣即將減半,影響價格的三大元素,值得的關注_萊特幣

萊特幣即將減半,那么很對萊特幣的愛好者,都想知道,這次減半對萊特幣的價格有什么影響,畢竟價格很重要,影響著收益.

1900/1/1 0:00:00
80%交易貨幣都是騙局,比特幣到底是天使還是魔鬼?_區塊鏈

比特幣監管比特幣到底是天使還是魔鬼?這個話題一直以來,在業界都爭論不休。有一位美國經濟學家魯比尼,他在談起比特幣的時候就相當的氣憤,他認為比特幣根本就是一場災難,他不僅沒有人在生活當中用于支付,

1900/1/1 0:00:00
九層妖樓竟然真的存在,被稱為東方金字塔,發掘兩層便被官方叫停_金字塔

《鬼吹燈》里的九層妖塔相比大家都了解,不管是看小說還是電影,都給觀眾留下了深刻的印象。那么這座神秘的古墓到底是誰的呢?他又為何建造了這么一座古墓呢? 位于青海的“血渭一號大墓”,就是九層妖塔的原.

1900/1/1 0:00:00
“破7”的背后,比特幣迎來新的曙光_比特幣

作者:笑巖 在老美上次降息后我們并沒有追隨其步伐,仍然堅持穩健的貨幣政策,然而人民幣開始了持續下跌,在8月5日上午美元兌人民幣在岸匯率和離岸匯率雙雙“破7”,很快引發了恐慌,市場避險情緒上升.

1900/1/1 0:00:00
走進智利,體會智利的詩_CAJ

智利是一個令人驚艷的國度,它美的像一首小詩,短短幾行字,卻能直抒胸臆,也可深情款款。好比智利的國土面積,麻雀雖小,不僅五臟俱全,還有全世界少見的迷人景色和震撼風光.

1900/1/1 0:00:00
ads