當前位置:
首頁 > 知識 > 把最小的區塊鏈變大

把最小的區塊鏈變大

把最小的區塊鏈變大

Python部落(python.freelycode.com)組織翻譯,禁止轉載,歡迎轉發。

把最小的區塊鏈變大

註:本文假設您已經閱讀了第一部分,如果你沒有閱讀過第一篇,戳這個鏈接:50行python代碼構建一個最小的區塊鏈(Blockchain)

最小的區塊鏈(blockchain)非常的簡單,而且相對的容易創建。但是,它的簡單帶來了一些缺陷。首先,SnakeCoin僅僅運行在一台單獨的機器上,所以它離分散式還很遙遠,更不用說去中心化了。第二,區塊被添加到鏈和主機創建一個Python對象並添加到列表一樣快。在簡單的區塊鏈的情況下,這是沒問題的,但我們現在要讓SnakeCoin變成真正的加密電子貨幣,所以我們需要控制每次能夠被創建的區塊(和SnakeCoin)的數量。

從現在開始,SnakeCoin的數據將會是一些交易記錄,所以每一個區塊的數據區將會是一個由交易記錄組成的列表。我們將會像下面一樣定義一個交易記錄。每一個交易記錄都會是一個JSON對象,列舉著SnakeCoin的發送方,SnakeCoin的接收方,和SnakeCoin轉讓的數量。

註:交易記錄使用JSON格式是因為我希望列舉的長度更短。

把最小的區塊鏈變大

現在我們知道了我們的交易記錄是怎樣的了,我們需要把它們加入一台我們區塊鏈網路中的電腦,這被稱為節點。為了這樣做,我們會創建一個簡單的HTTP伺服器,這樣任何用戶都可以讓我們的節點知道一個新的交易記錄產生了。一個節點將能夠接受一個以交易記錄作為body的POST請求。這就是為什麼交易記錄是JSON格式的原因,我們需要把它們作為一個請求的body傳送到我們的伺服器。

把最小的區塊鏈變大

把最小的區塊鏈變大

非常好!現在當用戶互相間發送SnakeCoin時,我們有了一個可以保存記錄的方法。這就是為什麼人們把區塊鏈稱為公開的,分散式的分類賬:所有交易記錄的存儲對所有人可見,並且被保存在網路的每一個節點中。

但是,問題來了:人們從什麼地方獲得SnakeCoin?什麼地方都沒有。現在還沒有SnakeCoin這樣的東西,因為還沒有創造和發行任何一個SnakeCoin。為了創造新的SnakeCoin,人們必須去挖掘SnakeCoin的新區塊。當他們成功的挖掘到新區塊,一個新的SnakeCoin就被創造了,並且被獎勵給挖到區塊的人。這個SnakeCoin在礦工把它發送給其他人之後開始流通。

我們並不希望挖掘新的SnakeCoin區塊過於簡單,因為這樣會創建太多SnakeCoin,使得它們的價值變得很低。相反,我們也不希望挖掘新區塊過於困難,因為這樣會讓SnakeCoin不夠所有人使用,而且會昂貴得讓我們不喜歡。為了控制挖掘新區塊的難度,我們會實現一個工作量證明(Proof-of-Work)演算法。工作量證明演算法本質上是生成一個難以被創造,但易於被驗證的結果。這個結果被稱為證明,而且正如它聽起來一樣,它是一台電腦執行了確定數量的計算的證明。

在SnakeCoin,我們會創建一個稍微簡單的工作量證明演算法。為了創建一個新的區塊,一台礦工的電腦必須要增加一個數字。當這個數字可以被9(「SnakeCoin」字母的數量)和上一個區塊的證明數字整除,一個新的SnakeCoin區塊就被挖掘出來,並且礦工將會得到一個嶄新的SnakeCoin。

把最小的區塊鏈變大

把最小的區塊鏈變大

現在,我們能控制一定時間周期內挖掘的區塊數量了,並且我們能在網路上發行SnakeCoin給人們,使他們能互相發送了。但正如我們所說,我們只在一台電腦上做到了這些。如果區塊鏈是去中心化的,我們如何能夠確定每一個節點中的鏈是一樣的呢?為了做到這一點,我們讓每一個節點廣播它的鏈的版本給其他節點,並且允許他們接受其他節點的鏈。這之後,每一個節點必須核實其他節點的鏈,所以每一個網路中的節點都與產生的區塊鏈看起來一致了。這被稱為共識(consensus)演算法。

我們的共識演算法會更簡單:如果一個節點的鏈與另一個節點的不一樣(就是說有衝突),然後網路中最長的鏈會保留下來,其他較短的鏈將會被刪除。如果我們網路中的鏈之間沒有衝突,那麼我們繼續。

把最小的區塊鏈變大

把最小的區塊鏈變大

我們現在僅僅是大致完成了。運行完整的SnakeCoin伺服器代碼之後,在你的終端上運行下面的代碼。確保你已經安裝了cURL。

1.創建一個交易記錄。

把最小的區塊鏈變大

2.挖掘一個新的區塊。

把最小的區塊鏈變大

3.檢查結果。在客戶窗口,我們看到以下結果

把最小的區塊鏈變大

隨著一些漂亮的列印結果,我們看到在挖掘之後我們在新區塊上得到了一些酷酷的信息。

把最小的區塊鏈變大

就是這樣,我們此刻已經創造了一個相當規模的區塊鏈。現在,SnakeCoin可以在多個機器上啟動,以創造一個網路,並且可以挖掘到真正的SnakeCoin了。請你盡你想要的去修改SnakeCoin的伺服器代碼,你需要問多少問題就問多少問題。在下一個部分,我們會討論創建一個SnakeCoin錢包,這樣用戶就可以發送、接受和存儲他們的SnakeCoin了。

把最小的區塊鏈變大


英文原文:https://ogmcsrgk5.qnssl.com/vcdn/1/優質文章長圖/lets-make-the-tiniest-blockchain-biger-ac360a328f4d.png
譯者:南北丶

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python部落 的精彩文章:

月考+python高效率代碼實踐:性能,內存和可用性
天才是這樣思考、工作和生活的-和Claude Shannon相處的一萬個小時
軟體工程不等於計算機科學
50行python代碼構建一個最小的區塊鏈(Blockchain)

TAG:Python部落 |

您可能感興趣

小米要搞區塊鏈 才是對迅雷區塊鏈最大的利空
小米要搞區塊鏈,才是對迅雷區塊鏈最大的利空
區塊鏈最大的瓶頸是什麼?
區塊鏈大咖說 肖風:數字化遷徙最核心的是AI和區塊鏈
區塊鏈和大數據
區塊鏈的最大共識是賺錢
區塊鏈技術的八大變革領域
喬之東:+區塊鏈最好的方式,就是用好區塊鏈現有的成熟技術
讓市場大媽也懂點區塊鏈
從全球最多區塊鏈專利到區塊區塊鏈遊戲火熱,哪些區塊鏈新聞是你的菜
區塊鏈大會上的大媽之舞,以及李笑來的區塊鏈「泡沫一定存在」
【區塊鏈大咖說】肖風:數字化遷徙最核心的是AI和區塊鏈
區塊鏈系列:區塊鏈里的區塊,賣的是什麼「葯」
區塊鏈的狂熱
三點鐘區塊鏈群火是必然的,社群就是為區塊鏈而生的
站在小白角度思考區塊鏈!不要被最近的「區塊鏈聲勢」帶入坑
能耗問題是區塊鏈最大的軟肋嗎?
區塊鏈大熱背後
薛蠻子:「現在最大的機會是區塊鏈!」
區塊鏈在非洲巨大的發展空間