91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用python代碼實現區塊鏈

發布時間:2021-12-24 16:56:16 來源:億速云 閱讀:150 作者:iii 欄目:互聯網科技

這篇文章主要介紹“怎么用python代碼實現區塊鏈”,在日常操作中,相信很多人在怎么用python代碼實現區塊鏈問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么用python代碼實現區塊鏈”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

區塊鏈

區塊鏈是一個公開的數字賬本,它按時間順序記錄比特幣或其他加密貨幣發生的交易。

更一般的講,區塊鏈是一個公共數據庫,新的數據將存儲在一個被稱為”塊“的容器中,然后 塊會被添加到一個不可篡改的鏈,因此被稱為”區塊鏈“。當我們談到比特幣或其他加密貨幣時, 這些數據指的是交易記錄。當然,你可以將任何類型的數據存入區塊鏈。

區塊鏈技術已經催生了全新的、完全數字化的貨幣,如比特幣和萊特幣,這些貨幣并不是由 中央政府發行或管理的。這一技術給那些不認可當前銀行系統人帶來了新的自由。 區塊鏈同時也為分布式計算帶來了革命性的創新,例如,以太坊區塊鏈引入了一些有趣的概念, 比如智能合約。

在本文中,我將用不到50行的Python 2代碼來做一個簡單的區塊鏈。我稱它為SnakeCoin

我們首先將定義“塊”的數據結構。在區塊鏈中,每個塊都存儲一個時間戳和一個可選地索引。在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) + 
               str(self.previous_hash))
    return sha.hexdigest()

太棒了!現在有了塊的數據結構,不過我們的目的是實現一個區塊鏈,所以需要將塊添加到一個鏈中。 如前所述,每個塊都需要前一個塊的信息。但是按照這個說法就會有一個問題,如何添加區塊鏈的第一個塊? 嗯,鏈中的第一個塊,或者說創世塊,是一個特殊的塊。在很多情況下需要手動添加或者采用單獨的 處理邏輯。

下面將創建一個函數,它的作用就是簡單地返回一個創世塊。這個塊的索引為0:

import datetime as date

def create_genesis_block():
  # Manually construct a block with
  # index zero and arbitrary previous hash
  return Block(0, date.datetime.now(), "Genesis Block", "0")

現在已經創建好了創世塊,接下來需要一個函數,以便在區塊鏈中生成后續的塊。這個函數將 以鏈中的前一個塊為參數,生成并返回新塊。當新塊的哈希值計算利用了來自前面塊的信息時, 區塊鏈的完整性就會隨著每個新塊而增加。如果不這樣的話,外部組織就更容易“改變過去”,用他們 偽造的塊來取代鏈中的塊。這一系列的塊哈希可以作為加密的證據,有助于確保一旦將塊添加到 區塊鏈,它就不能被替換或刪除。

def next_block(last_block):
  this_index = last_block.index + 1
  this_timestamp = date.datetime.now()
  this_data = "Hey! I'm block " + str(this_index)
  this_hash = last_block.hash
  return Block(this_index, this_timestamp, this_data, this_hash)

大部分的重要工作已經完成,現在可以創建區塊鏈了!在我們的實現中,區塊鏈就是一個簡單的 Python列表。列表的第一個元素是創世塊。當然,我們還需要添加后續的塊。因為SnakeCoin可以說 是世界上最迷你的區塊鏈,我們在這里只添加20個新的塊。可以用for循環來生成新塊:

# Create the blockchain and add the genesis block
blockchain = [create_genesis_block()]
previous_block = blockchain[0]

# How many blocks should we add to the chain
# after the genesis block
num_of_blocks_to_add = 20

# Add blocks to the chain
for i in range(0, num_of_blocks_to_add):
  block_to_add = next_block(previous_block)
  blockchain.append(block_to_add)
  previous_block = block_to_add
  # Tell everyone about it!
  print "Block #{} has been added to the blockchain!".format(block_to_add.index)
  print "Hash: {}\n".format(block_to_add.hash)

下面來測試一下我們的區塊鏈。

怎么用python代碼實現區塊鏈

到此,關于“怎么用python代碼實現區塊鏈”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乐平市| 屯门区| 汝城县| 曲松县| 博罗县| 宁河县| 淮滨县| 永仁县| 霍林郭勒市| 雷山县| 江源县| 永安市| 兴业县| 甘谷县| 富川| 玛多县| 健康| 台中市| 六盘水市| 定州市| 南和县| 平安县| 克什克腾旗| 东乌珠穆沁旗| 苍山县| 静安区| 麟游县| 钟祥市| 汉沽区| 安岳县| 余姚市| 元阳县| 东安县| 开远市| 南和县| 蓬安县| 金湖县| 建始县| 梧州市| 昭苏县| 唐山市|