03.05 不到五十行編寫區塊鏈~我彷彿看到比特幣在向我招手了

雖然有人認為區塊鏈本身仍有很多問題需要解決,但毫無疑問,這種新穎的技術是計算機界的奇蹟。


但是,究竟什麼是一個區塊鏈?

這裡小編科普一下,區塊鏈一種數字記賬本,其中以比特幣或其他加密方式按時間順序並公開記錄地進行交易。通俗的講,區塊鏈是一個公共數據庫,其中新產生的數據存儲在稱為塊的容器中,並被添加到具有已經存在數據的區塊構成的鏈中。在比特幣和其他加密貨幣的情況下,這些數據是一組交易。數據也可以是任何類型的。區塊鏈技術已經帶來了全新的,完全數字化的貨幣,如比特幣和萊特幣,它們不由中央機構發行或管理的,這給相信今天的銀行體系是騙局或失敗的個人帶來了新的自由。區塊鏈也以像ETH這樣的技術形式革新了分佈式計算,它引入了有趣的概念,如智能合約。

在本文中,我將在Python 2中以不到五十行代碼的情況下,製作一個簡單的區塊鏈。這將被稱為SnakeCoin。我們首先定義我們的區塊將是什麼樣子。

在區塊鏈中,每個塊都存儲有時間戳和可選的索引。在SnakeCoin中,我們將同時存儲兩者。並且為了幫助確保整個塊鏈的完整性,每個塊將具有自識別哈希值的功能。像比特幣一樣,每個區塊將包括作為區塊的索引的

哈希值時間戳,數據以及前一個塊的哈希值。哦,數據可以是任何你想要的

不到五十行編寫區塊鏈~我彷彿看到比特幣在向我招手了

真棒!我們已經有了塊結構了,但是我們正在創建一個區塊鏈。我們需要開始向實際的鏈條添加區塊。如前所述,每個塊都需要上一個塊的信息。但是這就出現了一個問題:塊區中的第一個區塊怎麼來的?那麼,第一個區塊,或起創世區塊,是一個特殊的塊。在許多情況下,它是手動添加的或具有允許添加的唯一邏輯。為了簡化,我們將創建一個函數,只需返回一個創世區塊,該區塊的索引為0,它在“previous hash”參數中具有任意數據值和任意值。

不到五十行編寫區塊鏈~我彷彿看到比特幣在向我招手了

現在我們創建了一個創世區塊,我們需要一個函數來生成區塊鏈中的後續區塊。該函數將將鏈中的前一個區塊作為參數,創建要生成的區塊的數據,並返回具有其相應數據的新塊。新產生的區塊會存儲先前區塊中的哈希值,區塊鏈的完整性隨著每個新的區塊而增加。如果我們沒有這樣做,其他人會很容易篡改歷史記錄,並用自己的全新數據替代我們的鏈條。這個哈希鏈作為加密證明,有助於確保一旦新區塊被添加到區塊鏈中,它不能被替換或刪除。

不到五十行編寫區塊鏈~我彷彿看到比特幣在向我招手了

這是本次任務的重心。現在我們可以創建我們的區塊鏈!在我們的例子中,區塊鏈本身就是一個簡單的Python列表。列表的第一個元素是創世區塊。當然,我們需要添加後續的區塊。因為SnakeCoin是最小的區塊鏈,所以我們只添加了20個新的塊。我們可以用for循環來做到這一點。

不到五十行編寫區塊鏈~我彷彿看到比特幣在向我招手了

我們來測試一下已有成果。

不到五十行編寫區塊鏈~我彷彿看到比特幣在向我招手了

我去!我們的區塊鏈生效了!如果要在控制檯中查看更多信息,可以編輯完整的源文件並打印每個塊的時間戳或數據。那就是SnakeCoin所提供的一切。為了使SnakeCoin縮小到當今生產塊鏈的大小,我們必須添加更多的功能,如服務器層,以跟蹤多臺機器上鍊的變化,並提供工作證明算法,以在給定時間段限制塊鏈數量。


分享到:


相關文章: