• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    通過Python函數來詳細解析區塊鏈

    來源:懂視網 責編:小采 時間:2020-11-27 14:20:44
    文檔

    通過Python函數來詳細解析區塊鏈

    通過Python函數來詳細解析區塊鏈:本篇文章給大家帶來的內容是關于通過Python函數來詳細解析區塊鏈,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。我想對于那里的很多人來說,區塊鏈就是這種現象,很難不讓你頭腦發熱。我開始觀看視頻和閱讀文章,但對我個人而言,直到我編
    推薦度:
    導讀通過Python函數來詳細解析區塊鏈:本篇文章給大家帶來的內容是關于通過Python函數來詳細解析區塊鏈,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。我想對于那里的很多人來說,區塊鏈就是這種現象,很難不讓你頭腦發熱。我開始觀看視頻和閱讀文章,但對我個人而言,直到我編

    本篇文章給大家帶來的內容是關于通過Python函數來詳細解析區塊鏈,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

    我想對于那里的很多人來說,區塊鏈就是這種現象,很難不讓你頭腦發熱。我開始觀看視頻和閱讀文章,但對我個人而言,直到我編寫自己的簡單區塊鏈,我才真正理解它是什么以及它的潛在應用價值。

    我對區塊鏈的看法是它是一個公開的加密數據庫。如果你是亞馬遜并且你想使用該技術來跟蹤庫存水平,那么使用區塊鏈是否有意義?可能沒有,因為你的客戶不想花費資源來驗證你的區塊鏈,因為他們只顧看著網站說Only 1 left!。

    我會讓你考慮未來的應用。所以不用多說,讓我們看看我們的7個函數!

    def hash_function(k):
     """Hashes our transaction."""
     if type(k) is not str:
     k = json.dumps(k, sort_keys=True)
    
     return hashlib.sha256(k).hexdigest()

    區塊鏈的核心是hash函數。如果沒有加密,區塊鏈將易于操作,并且交易將能夠以欺詐方式寫入。

    def update_state(transaction, state):
     state = state.copy()
    
     for key in transaction:
     if key in state.keys():
     state[key] += transaction[key]
     else:
     state[key] = transaction[key]
    
     return state

    state是來記錄誰擁有代幣交易情況。例如,我有10個代幣,我給1到Medium,然后狀態state將是下面字典的值。

    {‘transaction’: {‘Tom’: 9, ‘Medium’: 1}}

    值得注意的是,透支不可能存在。如果現有只有10個代幣,那么我就不能給某人11個代幣。以下函數驗證我們嘗試進行的交易確實有效。此外,交易總體上必須平衡。我不能給5個代幣并讓收件人收到4個代幣幣,因為這樣可以銷毀和生成代幣。

    def valid_transaction(transaction, state):
     """A valid transaction must sum to 0."""
     if sum(transaction.values()) is not 0:
     return False
    
     for key in transaction.keys():
     if key in state.keys():
     account_balance = state[key]
     else:
     account_balance = 0
    
     if account_balance + transaction[key] < 0:
     return False
    
     return True

    現在,我們可以制作我們的區塊。讀取前一個區塊的信息,并將其用于將其鏈接到新區塊。這也是區塊鏈理念的核心??梢試L試以欺騙性的方式將看似有效的交易插入到區塊鏈中,但是解密所有先前的塊在計算上(幾乎)是不可能的,這就保留了區塊鏈的完整性。

    def make_block(transactions, chain):
     """Make a block to go into the chain."""
     parent_hash = chain[-1]['hash']
     block_number = chain[-1]['contents']['block_number'] + 1
    
     block_contents = {
     'block_number': block_number,
     'parent_hash': parent_hash,
     'transaction_count': block_number + 1,
     'transaction': transactions
     }
    
     return {'hash': hash_function(block_contents), 'contents': block_contents}

    下面是一個小輔助函數來檢查前一個塊的哈希值:

    def check_block_hash(block):
     expected_hash = hash_function(block['contents'])
    
     if block['hash'] is not expected_hash:
     raise
    
     return

    一旦我們將所有東西組合在一起,就有時間來創建我們的區塊。我們現在將更新區塊鏈。

    def check_block_validity(block, parent, state):
     parent_number = parent['contents']['block_number']
     parent_hash = parent['hash']
     block_number = block['contents']['block_number']
    
     for transaction in block['contents']['transaction']:
     if valid_transaction(transaction, state):
     state = update_state(transaction, state)
     else:
     raise
    
     check_block_hash(block) # Check hash integrity
    
     if block_number is not parent_number + 1:
     raise
    
     if block['contents']['parent_hash'] is not parent_hash:
     raise
    
     return state

    在我們完成之前,必須驗證區塊鏈:

    def check_chain(chain):
     """Check the chain is valid."""
     if type(chain) is str:
     try:
     chain = json.loads(chain)
     assert (type(chain) == list)
     except ValueError:
     # String passed in was not valid JSON
     return False
     elif type(chain) is not list:
     return False
    
     state = {}
    
     for transaction in chain[0]['contents']['transaction']:
     state = update_state(transaction, state)
    
     check_block_hash(chain[0])
     parent = chain[0]
    
     for block in chain[1:]:
     state = check_block_validity(block, parent, state)
     parent = block
    
     return state

    最后,需要一個交易功能,它將以上所有內容掛起:

    def add_transaction_to_chain(transaction, state, chain):
     if valid_transaction(transaction, state):
     state = update_state(transaction, state)
     else:
     raise Exception('Invalid transaction.')
    
     my_block = make_block(state, chain)
     chain.append(my_block)
    
     for transaction in chain:
     check_chain(transaction)
    
     return state, chain

    所以,現在我們有了7個函數。我們如何與它互動?好吧,首先我們需要用Genesis Block啟動我們的區塊鏈。這是我們的新代幣(或庫存等)的開始。出于本文解釋說明的目的,我會說我是Tom,將從擁有10個代幣開始。

    genesis_block = {
     'hash': hash_function({
     'block_number': 0,
     'parent_hash': None,
     'transaction_count': 1,
     'transaction': [{'Tom': 10}]
     }),
     'contents': {
     'block_number': 0,
     'parent_hash': None,
     'transaction_count': 1,
     'transaction': [{'Tom': 10}]
     },
    }
    
    block_chain = [genesis_block]
    chain_state = {'Tom': 10}

    現在,看看當我將一些代幣交給Medium時會發生什么:

    chain_state, block_chain = add_transaction_to_chain(transaction={'Tom': -1, 'Medium': 1}, state=chain_state, chain=block_chain)

    state更新顯示誰擁有多少代幣:

    {'Medium': 1, 'Tom': 9}

    區塊鏈看起來像這樣:

    [{'contents': {'block_number': 0,
     'parent_hash': None,
     'transaction': [{'Tom': 10}],
     'transaction_count': 1},
     'hash': '064d0b480b3b92761f31831d30ae9f01954efaa62371b4b44f11465ec22abe93'},
     {'contents': {'block_number': 1,
     'parent_hash': '064d0b480b3b92761f31831d30ae9f01954efaa62371b4b44f11465ec22abe93',
     'transaction': {'Medium': 1, 'Tom': 9},
     'transaction_count': 2},
     'hash': 'b4ae25f0cc0ee0b0caa66b9a3473e9a108652d53b1dc22a40962fef5c8c0f08c'}]

    我們創建了第一個新交易并將其插入到堆棧頂部。現在,我希望我已經激起了你的好奇心,并且有興趣將代碼復制下來并使用它。

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    通過Python函數來詳細解析區塊鏈

    通過Python函數來詳細解析區塊鏈:本篇文章給大家帶來的內容是關于通過Python函數來詳細解析區塊鏈,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。我想對于那里的很多人來說,區塊鏈就是這種現象,很難不讓你頭腦發熱。我開始觀看視頻和閱讀文章,但對我個人而言,直到我編
    推薦度:
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 办公室久久精品| 精品久久久久久无码中文字幕一区| 日韩精品久久久久久免费| 亚洲精品中文字幕无码蜜桃| 亚洲精品无码成人AAA片| 午夜精品美女写真福利| 国产精品亚洲mnbav网站| 久久青青草原精品国产软件| 亚洲一日韩欧美中文字幕欧美日韩在线精品一区二 | 综合在线视频精品专区| 无码国产69精品久久久久网站| 国精品无码一区二区三区左线| 九九久久精品无码专区| 日本伊人精品一区二区三区| 久久久久99精品成人片牛牛影视| 一级成人精品h| 国产一成人精品福利网站| 精品亚洲欧美无人区乱码| 亚洲精品国产成人99久久| 国产亚洲精品国产| 亚洲电影日韩精品 | 老司机亚洲精品影院| 亚洲欧美国产精品专区久久| 精品人妻少妇嫩草AV无码专区| 国模精品一区二区三区| 少妇伦子伦精品无码STYLES| 久久久久99精品成人片| 国产精品片在线观看手机版| 久久久久久国产精品无码超碰| 51久久夜色精品国产| 一本一道精品欧美中文字幕| 欧美激情精品久久久久久久九九九 | 国产精品久久网| 91国内外精品自在线播放| 国内精品99亚洲免费高清| 国产精品国产三级国产a| 91精品国产成人网在线观看 | 国产美女久久精品香蕉69| 四虎国产精品永久在线观看| 亚洲AV永久无码精品| 亚洲国产一二三精品无码|