比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads

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

Author:

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

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

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

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

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

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

63%的以太坊交易區塊現在符合美國外國資產控制辦公室的要求:金色財經報道,符合美國外國資產控制辦公室(OFAC)制裁的最大提取價值服務的受歡迎程度繼續增長,所有區塊的63%都符合規定。

這些中繼器中使用最廣泛的--占MEV區塊總市場的近49%--是Flashbots,它說它將忽略來自交易混合服務Tornado Cash的交易,后者在今年早些時候被美國政府制裁了。自The Merge以來,越來越多的股權證明參與者選擇使用服務提供商來獲取驗證獎勵。這一趨勢帶來的整合,加上Flashbots的主導地位,導致符合OFAC要求的區塊越來越多。(the block)[2022/10/27 11:46:45]

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

美國外交官:希望解決國際貨幣基金組織和薩爾瓦多的融資緊張局勢:美國主管事務的副部長Victoria Nuland周三會見了薩爾瓦多總統納Nayib Bukele,這是她對該地區訪問的一部分。她希望薩爾瓦多和國際貨幣基金組織(IMF)在該國比特幣法律存在分歧后就融資協議達成協議。此前消息,薩爾瓦多于 6 月 8 日成為世界上第一個承認加密貨幣為法定貨幣的國家,預計將于9 月 7 日將其納入法律。(coindesk)[2021/7/1 0:19:52]

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

從哈希函數說起

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

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

中科院戰略研究院研究員:建議我國主動探索將比特幣等私有貨幣納入我國外匯資產儲備:昨日,中國科學院戰略研究院研究員在微信公眾號“騰訊研究院”上發表文章,詳細探討了私有數字貨幣、穩定幣和法定數字的潛在風險,并給出應對的建議。在談及應對私有數字貨幣潛在的風險時,文章建議密切跟蹤最新進展情況,做好風險研判預判,提前儲備風險應對技術和方案,并主動探索將比特幣等私有數字貨幣納入我國外匯資產儲備。同時,加強對穩定幣新理念、新架構的創新探索和風險評估,主動對接監管,做好合規發展。[2021/5/14 22:01:10]

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

聲音 | 中國外運:擁有區塊鏈技術研發團隊,主要研究在物流行業應用:中國外運(601598.SH)在互動平臺表示,公司從2017年開始研究區塊鏈技術及在物流行業中的應用,擁有自己的區塊鏈技術研發及產品應用團隊,主要研究區塊鏈技術在供應鏈金融、數字化單證及“區塊鏈+物聯網”等方面的創新應用。公司尚未對區塊鏈做出重大投入,未產生直接經濟收益。[2020/2/13]

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

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

來看一個例子:

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

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

政策 | 伊朗嚴厲法規導致礦工轉至國外,非營利組織試圖通過議會等游說改革法規:伊朗政府最近批準的加密貨幣挖礦規定似乎正在迫使大型礦商將其業務轉移到國外。伊朗內閣于2019年8月4日實施一套加密貨幣挖礦法規幾天后,開始有礦工收拾行裝搬家的報道。俄羅斯、格魯吉亞、哈薩克斯坦、亞美尼亞,甚至伊拉克都是被專業伊朗礦工認為更適合進行加密貨幣挖礦的首選目的地。 非營利組織伊朗區塊鏈社區(IBC)負責人Sepehr Mohammadi表示,“我們歡迎政府采取措施監管并承認加密貨幣挖礦是一個行業,但能源價格絕不經濟或有競爭力,只會導致資本外逃。” 此外,他表示,IBC正試圖通過議會和其他實體游說改革法規。如果一切都失敗了,它將考慮向行政法院提出正式申訴。(Bitcoin Magazine)[2019/9/3]

看到這里你可能會問,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:區塊鏈YTHHONSHA區塊鏈證據保全怎么操作流程YTH幣honey幣怎么充值ESHARE

比特幣價格實時行情
關于WBFex上線GRM的公告_Chiliz

尊敬的WBFex用戶 WBFex即將上線GRM,并在開放區開通GRM/USDT交易對,具體時間安排如下:充值時間:2019年9月6日17:00交易時間:2019年9月6日18:30提現時間:20.

1900/1/1 0:00:00
互鏈月報 | 8月區塊鏈私募融資項目環比增長64.1% 資金加速涌入交易所_OIN

文|互鏈脈搏研究院·梁山花榮2019年8月,全球區塊鏈私募融資市場逐漸回暖。互鏈脈搏研究院統計數據顯示,2019年8月,全球區塊鏈領域共斬獲64筆融資,環比增長64.1%,融資總額約為12.67.

1900/1/1 0:00:00
BCH兩年:拓展支付 探索“發幣”_COI

文|JXkin編輯|文刀9月4日,比特幣現金社區在澳大利亞昆士蘭州開了一場會,召集全球的社區成員前往“BitcoinCash之城”感受BCH的支付體驗,也一起聊了聊未來的發展路徑.

1900/1/1 0:00:00
中國人民銀行支付結算司穆長春:央行數字貨幣不會影響微信、支付寶_APP

上周消息,中國人民銀行支付結算司副司長穆長春在得到App課程中表示,央行數字貨幣不會影響微信、支付寶,原因如下:1.首先從法權上,央行數字貨幣的效力和安全性是最好的.

1900/1/1 0:00:00
Dash Core GroupCEO:比特幣的閃電網絡完全掩蓋了區塊鏈之外的交易_OIN

在最近的一次采訪中,DashCoreGroup首席執行官RyanTaylor表示,他們的PrivateSend功能最初是在masternode層上開發的.

1900/1/1 0:00:00
《關于火幣OTC 9月16日系統升級的通知》_比特幣

尊敬的用戶: ????火幣“法幣交易”將于新加坡時間9月16日0:00-6:00進行系統升級,本次升級包括:優化風控系統、調整廣告的浮動溢價策略等。在升級期間,我們將暫停“法幣交易”的所有服務.

1900/1/1 0:00:00
ads