成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

零基礎如何實現Python來實現一個區塊鏈?我來告訴你就是這么簡單

開發 后端 區塊鏈
那作為當下最火的語言Python,其實可以干很多事情,今天我們用Python來簡單的實現一個區塊鏈吧,想想都覺得很酷!

2018年最火的技術是什么,毫無疑問是區塊鏈,今年年初區塊鏈橫空出世,其實對于我們碼農來說,除了平時埋頭苦干,對新技術需要保持一定敏感性!每一種新的技術的出現都和未來的產業發展非常相關,蘊含著巨大的機會,除了干活還要擴張自己的眼界,對自己大有裨益!

那作為當下最火的語言Python,其實可以干很多事情,今天我們用Python來簡單的實現一個區塊鏈吧,想想都覺得很酷!

01.什么是區塊

首先區塊鏈就是一種去中心化的分布式賬本數據庫,簡單說就是一組區塊組合的鏈條。那么里面每一個單元就是區塊:

區塊上面有幾個重要的屬性:一個數據data,一個pre_hash和自身的hash:

1.我們用hashlib這個庫函數來處理hash計算操作

2.新建一個Block類,來表示區塊,里面有兩個屬性(一個pre_hash,一個data)

3.這個為了簡便用了類屬性@property裝飾器來除了hash的值,即當我用block.hash=xxx的時候,會系統自動調用這個hash函數。

4.這個hash函數很關鍵,以為你區塊鏈里面的都是用sha256來加密的,也是安全性比較搞的一種加密方式,我們***會得到一個十六進制數據字符串值。

區塊中有一個非常特殊,就是創世區塊!它是所有區塊里面的頭,他是父區塊,因此沒有pre_hash

02.定義一個區塊鏈

我們上面已經定義了區塊,下面來定義一個區塊鏈,把一個一個區塊連起來!

我們需要再寫一個類,用一個列表把一個一個區塊存起來,形成一個列表鏈!

1).我們聲明一個BlockChain的類,然后里面設置一個blocks列表數據結果,用來存放區塊,先把父區塊鏈放進去

2).增加一個add_block函數,用來添加區塊:

  •  先生成一個新的區塊內存
  •  然后添加data和它的hash值
  •  ***把區塊添加到區塊鏈中

03.實現區塊鏈

我們的區塊和區塊鏈都已經準備好了,是不是有點小興奮,大名鼎鼎的區塊鏈,Python幾十行代碼就模擬出來了,Python確實快速開發的神奇,我們來看一下效果:

 

  1. >>  
  2. Prev Hash:  
  3. Data:Genesis Block  
  4. Hash:89eb0ac031a63d2421cd05a2fbe41f3ea35f5c3712ca839cbf6b85c4ee07b7a3  
  5. --------------------------------------------------------------------------------  
  6. PrevHash:89eb0ac031a63d2421cd05a2fbe41f3ea35f5c3712ca839cbf6b85c4ee07b7a3  
  7. Data:Jack send 1 BTC to Sam  
  8. Hash:ad3ebab374b25e6f3d4f0f14465ff3f86020ce036b5b538c2a506de800dac524  
  9. --------------------------------------------------------------------------------  
  10. PrevHash:ad3ebab374b25e6f3d4f0f14465ff3f86020ce036b5b538c2a506de800dac524  
  11. Data:Sam send 2 BTC to lili  
  12. Hash:f9ba725838192731e73b8f28b33c88be9798c314ea7a538fc77e80039413b872  
  13. -------------------------------------------------------------------------------- 

看我們一共創建了3個區塊:

***個區塊:是父區塊,沒有pre_hash,只有數據和一串hash碼

第二個區塊:是 "Jack發送1個比特幣給Sam"它的區塊的pre_hash指像前面的父區塊hash碼

第三個區塊:是"Sam發送了2個比特幣給lili"它的區塊的pre_hash指像前面的Jack區塊

04.區塊鏈的不可篡改

看完前面基本是不是對區塊鏈有了一個感性的認識,那么區塊鏈最牛逼的地方就是不可篡改,為啥這么說呢?

比如我們修改了中間的一個區塊的內容,會到時它的hash改變,那么后面的區塊的pre_hash就會和前面的區塊的里面hash對應不起來!

我們用代碼看一下:

我把第二個block里面的數據改一下,隨便改一下里面的內容。然后我們看一下這個block里面的hash的變化: 

  1. Prev Hash:  
  2. Data:Genesis Block  
  3. Hash:89eb0ac031a63d2421cd05a2fbe41f3ea35f5c3712ca839cbf6b85c4ee07b7a3  
  4. Valid Block  
  5. --------------------------------------------------------------------------------  
  6. PrevHash:89eb0ac031a63d2421cd05a2fbe41f3ea35f5c3712ca839cbf6b85c4ee07b7a3  
  7. Data:Jack send 1.3 BTC to Alice  
  8. Hash:ec7b877b3a47a74ababf298e047352e8805fed3fa99ad15ab788ec47a70776d0  
  9. Valid Block  
  10. --------------------------------------------------------------------------------  
  11. PrevHash:ad3ebab374b25e6f3d4f0f14465ff3f86020ce036b5b538c2a506de800dac524  
  12. Data:Sam send 2 BTC to lili  
  13. Hash:f9ba725838192731e73b8f28b33c88be9798c314ea7a538fc77e80039413b872  
  14. Invalid Block  
  15. -------------------------------------------------------------------------------- 

因為修改了第二個區塊的內容,里面hash值也隨著改變,這樣的后面的區塊就無法和前面的區塊的hash對應起來,這就是區塊鏈的不可篡改性!因為是用sha256加密的方法,那怕改動一點點都不行!

好了,上面就是用Python簡單入門區塊鏈,還沒有加入挖礦(工作量證明)的環節,這次通過Python語言本身來理解區塊鏈,不知道大家感覺如何,歡迎留言討論!

文末知識點摘要:99% 會陷入的編程誤區

前天一位讀者在微信上問了我這樣一個問題。

這樣的問題可以衍生出,在學習編程的過程中,那些難以理解的編程概念,我們需要怎么樣去學習。

每個編程語言都會有它自己的特性,比如 C++ 有指針操作,Java 有類的概念,Python 有字典數據結構。這些語言獨有的特性,也正是它們魅力所在。在學習一門編程語言,起初大家都是從最基礎的語法學起。比如 Python,很多教程在簡單介紹了下 Python 的一些語言特點,就會開始固有的章節「編寫你的***個 XXX 代碼」,即寫個輸出「hello world」。

隨著進一步的學習,你會遇到更高級的語法。比如 Python 的多線程、正則表達式、匿名函數、裝飾器等等。掌握這些高級語法,能讓你的代碼更加優雅。但對應的也就更加難以理解。大部分人在學習高級語法的時候,都是一頭霧水。看了很多資料,始終還是無法掌握。

概念學習

這時候你已經陷入「概念學習」的誤區。覺得我一定要先把概念學好,學懂,我才能使用的好。以至于到了***,就像最開始的讀者一樣,越學越抽象,越學越不知所措。

編程原本就是注重實戰的科目,用所學的知識,來解決實際項目。在項目中,磨練已學到的知識。但大部分人卻本末倒置,心想我一定要把編程語法全學好,一個都不能落下。然而這樣的學習效率是非常低下,并且只會越學越迷茫,越學越失去對編程的興趣,最終放棄編程。

項目驅動學習

不要一味的陷入編程語法,要懂的項目驅動學習。你只要稍微把編程基礎知識學習下,然后盡可能多的做項目。在做項目的過程中,肯定會遇到很多困難,也會遇到很多自己不懂的語法。但在項目中遇到的語法,會讓你清楚知道這語法可以做什么。這就好比,你在打游戲的時候,買了一件裝備,知道這件裝備很厲害。這時候你在回去看下裝備的介紹,就會明白裝備為什么那么厲害。

在項目中學習也是如此,遇到難以理解的地方,這時候在回頭查找相關資料,學習的效率會大幅度的提升。那些晦澀難懂的概念,也就很容易理解。 

責任編輯:龐桂玉 來源: 今日頭條
相關推薦

2019-10-30 13:30:29

Python區塊鏈編程語言

2018-07-06 13:58:18

程序員學習互聯網

2018-11-05 15:50:43

區塊鏈比特幣互聯網

2021-07-21 05:22:12

Webpack 前端 JavaScript

2018-06-08 16:48:09

PythonQQ機器人

2023-08-21 08:01:03

2018-09-13 13:52:08

2022-07-26 08:14:16

注冊中心ProviderConsumer

2022-04-29 08:00:36

web3區塊鏈比特幣

2024-11-08 08:34:59

RocketMQ5.Remoting通信

2022-04-25 15:01:07

系統程序員調度

2022-02-15 20:08:41

JDKJavaWindows

2019-11-18 10:18:13

區塊鏈區塊鏈5.0區塊鏈技術

2017-09-21 15:31:49

2015-11-12 09:57:57

前端零基礎學習

2021-04-09 20:04:34

區塊鏈Go加密

2019-04-03 10:50:09

Javascript區塊鏈技術

2014-09-25 09:51:29

Android App個人博客

2019-06-04 08:45:00

點贊APP設計

2018-03-21 06:54:38

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日韩亚洲二区 | 国产ts人妖系列高潮 | 中文字幕一区二区三区四区五区 | 91精品久久久久久久 | 亚洲第一视频网站 | 国产精品无码专区在线观看 | 亚洲国产精品日韩av不卡在线 | www.久久久 | 四虎国产| 欧美一区2区三区4区公司 | 网站黄色在线免费观看 | 日韩三级在线观看 | 国际精品鲁一鲁一区二区小说 | 欧美不卡| 国产蜜臀| 男女免费观看在线爽爽爽视频 | 成人午夜精品 | 欧美中文在线 | 精品国产欧美一区二区三区成人 | 在线播放国产视频 | 影音先锋欧美资源 | 伊人网综合在线 | 自拍偷拍在线视频 | 国产男女精品 | 免费在线观看一区二区 | 日韩欧美精品一区 | 日日干日日操 | 日韩高清一区 | 欧美在线观看一区 | 亚洲欧美网| 成人免费在线 | 日韩不卡一二区 | 综合久 | 日本在线视频一区二区 | 国产精品视频一二三区 | 亚洲综合国产 | 日本午夜精品一区二区三区 | 国产日韩欧美激情 | 国产免费一区二区三区免费视频 | av第一页 | 奇米四色影视 |