50行python代碼構建一個最小的區塊鏈(Blockchain)

雖然有些人認爲區塊鏈(blockchain)技術的應用場景還有待研究,但毫無疑問,這一新穎技術的出現是計算界的奇蹟。那麼,什麼是區塊鏈?

 

區塊鏈:是一種分類賬技術,使用區塊鏈進行交易的比特幣以及其他加密貨幣的交易記錄會被按時間順序存儲,並且是公開存儲。


通俗的說,它是一個公共數據庫,其中新數據存儲在稱爲塊的容器中,並被添加到具有過去添加的數據的不可變鏈(因此是塊鏈)。在比特幣和其他加密貨幣的情況下,這些數據是一組交易記錄,當然,數據可以是任何類型的。


Blockchain技術已經引起了新的,完全數字化的貨幣,如Bitcoin和Litecoin,它們不是由中央機構發行或管理的。這對那些認爲現在的銀行體系是騙局的個人帶來了新的自由。Blockchain也以像Ethereum這樣的技術形式革新了分佈式計算,它引入了有趣的概念,如智能合同。

在本文中,我將在不到50行的Python代碼中製作一個簡單的blockchain,這將被稱爲SnakeCoin。


我們首先定義我們的塊將是什麼樣子。在塊鏈中,每個塊都有時間戳和可選的索引,在SnakeCoin中,將同時存儲兩者,並且爲了幫助確保整個塊鏈的完整性,每個塊將具有自識別散列。像比特幣一樣,每個塊的散列將是塊的索引,時間戳,數據以及前一個塊的哈希散列的加密散列。當然,這些數據可以是任何你想要的。

 

很好!現在我們有了塊結構,但是我們正在創建一個塊鏈,需要向實際的鏈條添加塊。如前所述,每個塊都需要上一個塊的信息。也就是說,出現了一個問題:塊區中的第一個塊怎麼到達那裏?因此,第一個塊,或起源塊,是一個特殊的塊。在許多情況下,它是手動添加的或具有允許添加的唯一邏輯值。


我們將創建一個函數返回一個起源塊,使事情變得容易。該塊的索引爲0,它在“previous hash”參數中具有任意數據值和任意值。

 

現在我們可以創建一個起源塊,我們需要一個函數來生成塊鏈中的後續塊。該函數將將鏈中的前一個塊作爲參數,創建要生成的塊的數據,並返回具有其相應數據的新塊。當新塊得到先前塊中的哈希信息時,塊鏈的完整性隨着每個新的塊而增加。如果我們沒有這樣做,外界信息會更容易“改變過去”,並用自己的更新變化來替代我們的鏈條。這個哈希鏈作爲加密證明,有助於確保一旦塊被添加到塊鏈中,它不能被替換或刪除。

 

以上是必要的工作。現在我們可以創建我們的blockchain!在我們的例子中,blockchain本身就是一個簡單的Python列表。列表的第一個元素是起源塊。當然,我們需要添加後續的塊。因爲SnakeCoin是最小的塊,所以我們只添加20個新的塊。我們可以用for循環來做到這一點。

 

讓我們來測試一下

 

完美運行,如果要在控制檯中查看更多信息,可以編輯完整的源文件並打印每個塊的時間戳記或數據。


那就是SnakeCoin所提供的一切。爲了使SnakeCoin擴展到當今實際產品級別塊鏈的規模,我們必須添加更多的功能,如服務器層,以跟蹤多臺機器上鍊的變化,並提供有效證明算法,以限制一定時間段內添加的區塊數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章