(點擊上方公眾號,可快速關注)
編譯: linux中國 / Xingyu.Wang 英文:Gerald Nash
https://linux.cn/article-9453-1.html
雖然有些人認為區塊鏈是一個早晚會出現問題的解決方案,但是毫無疑問,這個創新技術是一個電腦技術上的奇蹟。那麼,究竟什麼是區塊鏈呢。 區塊鏈
以比特幣(Bitcoin)或其它加密貨幣按時間順序公開地記錄交易的數字賬本。
更通俗的說,它是一個公開的資料庫,新的資料存放區在被稱之為區塊(block)的容器中,並被添加到一個不可變的鏈(chain)中(因此被稱為區塊鏈(blockchain)),之前添加的資料也在該鏈中。對於比特幣或其它加密貨幣來說,這些資料就是一組組交易,不過,也可以是其它任何類型的資料。
區塊鏈技術帶來了全新的、完全數字化的貨幣,如比特幣和萊特幣(Litecoin),它們並不由任何中心機構管理。這給那些認為當今的銀行系統是騙局並將最終走向失敗的人帶來了自由。區塊鏈也革命性地改變了分散式運算的技術形式,如以太坊(Ethereum)就引入了一種有趣的概念:智能合約(smart contract)。
在這篇文章中,我將用不到 50 行的 Python 2.x 代碼實現一個簡單的區塊鏈,我把它叫做 SnakeCoin。 不到 50 行代碼的區塊鏈
我們首先將從定義我們的區塊是什麼開始。在區塊鏈中,每個區塊隨同時間戳記及可選的索引一同儲存。在 SnakeCoin 中,我們會儲存這兩者。為了確保整個區塊鏈的完整性,每個區塊都會有一個自識別的雜湊值。如在比特幣中,每個區塊的雜湊是該塊的索引、時間戳記、資料和前一個區塊的雜湊值等資料的加密雜湊值。這裡提及的“資料”可以是任何你想要的資料。
import hashlib as hasher
class Block:
def __init__(self, index, timestamp, data, previous_hash):
self.index = index
self.timestamp = timestamp
self.data = data
self.previous_hash = previous_hash
self.hash = self.hash_block()
def hash_block(self):
sha = hasher.sha256()
sha.update(str(self.index) +
str(self.timestamp) +
str(self.data) +