用 Python 構建一個極小的區塊鏈

來源:互聯網
上載者:User

(點擊上方公眾號,可快速關注)


編譯: 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) +

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.